Задание №1. Дано трехзначное число. Напишите программу определения, является ли оно

advertisement
Задание №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.
Download