Задачи. Обработка символьных строк.

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.