Задание №1. Дано трехзначное число. Напишите программу определения, является ли оно палиндромом ("перевертышем"), т. е. числом, десятичная запись которого читается одинаково слева направо и справа налево. program polindrom; var n, c, d, e, k : integer; begin wtite ('введите 3-х значное число N ='); readln (n); c := n div 100; d := (n div 10) mod 10; e := n mod 10; k:= 100*e + 10*d + c; if n = k then write ('палиндром') else write('не палиндром') end. Задание №2 Дана строка символов до точки. Определить, является ли она записью целого десятичного числа, кратного трём. Строка символов — это строка, которая заканчивается точкой. Если строка является записью целого десятичного числа, кратного трём, то выводим 1. Если не так, то 0. program kratnotrem; var s1 : string; k, i, m : integer; begin writeln('Введите строку'); readln(s1); m:=length(s1); k:=0; i:=1; repeat case s1[i] of '0'..'9' : k:=k+(ord(s1[i])–ord('0')); ' ':; else k:=–1; end; i:=i+1; until (i>m) or (k<0); if k mod 3 = 0 then writeln('1') else writeln('0') end. Задание №3 Дана строка символов. Удалить из неё все знаки препинания. program prepinania; var str, str1 : string; L, i : integer; m : set of char; begin m:=['.', ',', '!', ':', ';', '?', '-']; writeln('Введите текст'); readln(str); L:=length(str); str1:=''; for i:=1 to L do if not(str[i] in m) then str1:=str1+str[i]; str:=str1; writeln('Преобразованный текст ', str); end. Задание №4 Напишите программу, подсчитывающую количество символов использованных в произвольном вами выбранном тексте. program tekst; const dir = 't.in'; (имя файла с текстом (лежит в папке с программой)) var f: text; s: string; sum: longint; begin sum:=0; (обнуляем сумму) assign(f, dir); (открываем доступ к файлу) reset(f); (для чтения) while not (eof(f)) do (пока не конец файла) begin read(f, s); (считываем строку) sum := sum + length(s); (определяем ее размер и прибавляем к сумме) if not (eof(f)) then readln(f); (если не конец файла, то переходим на новую строку) end; close(f); (закрываем файл) writeln(sum); (пишем сумму всех символов в тексте) end. Задание №5 Рассмотрим, как должна работать данная программа: 1) Если в лесенке один ряд, то это одна лесенка 2) Если оставшееся количество кубиков меньше, чем было в предыдущем ряду, то будет невозможно составить лесенку. Будем решать данную задачу методом рекурсивного алгоритма: Так как два ряда образуются, если в меньшем ряду кубиков будет меньше, чем (x div 2) -1 , где x – количество всех кубиков, то в основе цикла будет лежать промежуток [1; (x div 2) -1]. Если текущее количество кубиков недостаточное для образования нового ряда, то способ будет равен нулю, так как он будет дожидаться максимального количества, способ которого равен 1. program lesenka; var les,n:integer; procedure F(x:integer); (процедура составления лесенок) var a,i:integer; begin for i:=1 to x do (цикл от 1 до кол-ва оставшихся кубиков) if i=x then les:=les+1 (если возможно составить в ряд, то есть одна лесенка) else if i<=((x div 2)-1) then F(i); (если можно разделить ряд на два, то пытаемся разделить) end; begin readln(n); ( вводим количество кубиков) les:=0; (обнуляем количество лесенок) F(n); (начинаем составлять лесенки) writeln(les); (выводим количество возможных лесенок) end.