Задачи. Обработка символьных строк.
8.1. В заданном слове (тексте) подсчитать количество:
а) всех символов;
б) всех слов;
в) данных букв;
г) слов, начинающихся с заданной буквы;
д) всех цифр;
е) строчных (заглавных) латинских (русских) букв.
8.2. Преобразовать введенное слово в последовательность кодов его букв. Решить и обратную задачу.
8.3. Переписать заданное слово (фразу) в обратном порядке.
8.4. Написать программу, позволяющую определить, является ли данное слово палиндромом (т. е. читается ли оно справа налево так же, как и слева направо).
8.5. Напечатать все подслова данного слова:
а) начинающиеся с первой буквы, по возрастанию (убыванию) их длин;
б) заканчивающиеся последней буквой, по возрастанию (убыванию) их длин.
8.6. В данном тексте заменить все символы, кроме цифр, на тире. Подсчитать количество оставшихся в тексте цифр.
8.7. Проверить, является ли введенный текст:
а) целым числом;
б) русским словом;
в) латинским словом.
Если это на так, то вывести первый несоответствующий символ и номер его позиции в тексте.
8.8. Составить программу для изменения в заданном русском (латинском) слове строчных букв на заглавные.
8.9. В записи данного натурального числа:
а) найти самую большую цифру и определить ее позицию;
б) подсчитать количество различных цифр и вывести их.
8.10. Составить программу, проверяющую, является ли данный шестизначный номер "счастливым", т. е. равна ли сумма первых трех его цифр сумме трех последних.
8.11. В данном натуральном числе переставить цифры таким образом, чтобы получилось наибольшее (наименьшее) число, записанное теми же цифрами.
8.12. Переписать русское слово так, чтобы все гласные в нем были:
а) вычеркнуты;
б) удвоены.
8.13. Переписать в алфавитном порядке все буквы, из которых состоит данное латинское слово, причем каждая буква должна быть переписана:
а) только один раз;
б) столько раз, сколько она встречается в данном слове.
8.14. В двух данных словах найти максимальную общую часть.
8.15. Составить программу вычисления факториала числа N со всеми значащими цифрами, представив его в виде символьной строки.
8.16. В данном слове поменять местами буквы, стоящие на p-й и q-й позициях от начала.
8.17. Вывести все слова, какие можно образовать из букв данного слова, переставляя их всеми возможными способами.
8.18. Написать программу вывода на текстовой экран данного слова, причем:
а) каждая буква, начиная с первой, "пробегает" на свое место от правого края экрана;
б) каждая буква, начиная с последней, "пробегает" на свое место от левого края экрана;
в) все слово появляется из-за правой (левой) границы экрана и перемещается в центр;
г) каждая буква, начиная с первой (последней), "падает" с верхней строки экрана;
д) каждая буква, начиная с первой (последней), "прыгает" с нижней строки экрана;
е) буквы парами, начиная со средних, "выбегают" слева и справа навстречу друг другу;
ж) все буквы слова, начиная со средней, поочередно "выбегают" из-за левой и из-за правой границ экрана;
з) все слово появляется из середины экрана, расширяясь влево и вправо;
и) одна половина слова появляется из-за левого края экрана, другая - из-за правого, и обе половины соединяются в центре.
8.19. Составить программу для перевода произвольного целого числа из десятичной системы счисления в двоичную (восьмеричную, шестнадцатеричную) и обратно. Предусмотреть проверку вводимых недесятичных чисел на правильность их записи.
8.19.
{перевод целых чисел в различные системы счисления}
var n, n1: longint; i, p, ec: integer; bin, hex, oct, c: string;
f: boolean;
begin
write('n='); readln(n);
n1:=n;
{перевод из десятичной системы в двоичную}
bin:='';
while n>0 do
begin
str(n mod 2, c); bin:=c+bin; n:=n div 2
end;
writeln(bin);
{перевод из десятичной системы в восьмеричную}
n:=n1;
oct:='';
while n>0 do
begin
str(n mod 8, c); oct:=c+oct; n:=n div 8
end;
writeln(oct);
{перевод из десятичной системы в шестнадцатеричную}
n:=n1;
hex:='';
while n>0 do
begin
case n mod 16 of
0,1,2,3,4,5,6,7,8,9: str(n mod 16,c);
10: c:='A';
11: c:='B';
12: c:='C';
13: c:='D';
14: c:='E';
15: c:='F';
end;
hex:=c+hex; n:=n div 16
end;
writeln(hex);
{перевод из двоичной системы в десятичную}
n:=0;
repeat
write('Задайте двоичное число bin='); readln(bin);
f:=true;
for i:=1 to length(bin) do
if (bin[i]<>'0') and (bin[i]<>'1') then f:=false;
until f;
p:=1;
for i:=length(bin) downto 1 do
begin val(bin[i], n1, ec); n:=n+p*n1; p:=p*2 end;
writeln(n);
{перевод из восьмеричной системы в десятичную}
n:=0;
repeat
write('Задайте восьмеричное число oct='); readln(oct);
f:=true;
for i:=1 to length(oct) do
if (oct[i]<'0') or (oct[i]>'7') then f:=false;
until f;
p:=1;
for i:=length(oct) downto 1 do
begin val(oct[i], n1, ec); n:=n+p*n1; p:=p*8 end;
writeln(n);
{перевод из шестнадцатеричной системы в десятичную}
n:=0;
repeat
write('Задайте шестнадцатиричное число hex='); readln(hex);
f:=true;
for i:=1 to length(hex) do
if (ord(hex[i])<48) or ((ord(hex[i])>57) and (ord(hex[i])<65)) or
((ord(hex[i])>70) and (ord(hex[i])<97)) or (ord(hex[i])>102) then f:=false;
until f;
p:=1;
for i:=length(hex) downto 1 do
begin
case hex[i] of
'0','1','2','3','4','5','6','7','8','9': val(hex[i], n1, ec);
'A','a': n1:=10;
'B','b': n1:=11;
'C','c': n1:=12;
'D','d': n1:=13;
'E','e': n1:=14;
'F','f': n1:=15;
end;
n:=n+p*n1;
p:=p*16
end;
writeln(n);
Readln
End.


