Задача 1. является ли оно палиндромом («перевертышем»), т.е. числом, десятичная

advertisement
Задача 1. Дано трехзначное число. Напишите программу определения,
является ли оно палиндромом («перевертышем»), т.е. числом, десятичная
запись которого читается одинаково слева направо и справа налево.
Решение:
Вводим с клавиатуры трехзначное число, проверяем равенство первой и
третьей цифр числа. При истинности условия выводим на экран 'палиндром',
иначе - 'не палиндром'.
Program Zadanie_1;
Var a:integer;
begin
read(a);
if a mod 10 =a div 100 then Write('палиндром') else Write('не палиндром');
end.
Задача 2. Дана строка символов до точки (<=255). Определить, является ли
оно записью целого десятичного числа, кратного трем. Строка символов –
это строка, которая заканчивается точкой. Если строка является записью
целого десятичного числа, кратного трем, то выводим 1. Если не так, то 0.
Решение:
Используем процедуру для преобразования символов в цифры. В основной
программе цифры числа заносим в массив, находим сумму цифр числа,
проверяем на делимость на 3, если сумма цифр делится на 3, то и число
делится на 3.
Program Zadanie_1;
uses crt;
Var a:string;s,i,u:integer;
q:array[1..100] of integer;
procedure perevod(t:char;var s:integer);
begin
if t='0' then s:=0 else
if t='1' then s:=1 else
if t='2' then s:=2 else
if t='3' then s:=3 else
if t='4' then s:=4 else
if t='5' then s:=5 else
if t='6' then s:=6 else
if t='7' then s:=7 else
if t='8' then s:=8 else
if t='9' then s:=9 else;
end;
begin u:=0;
read(a);
s:=length(a);
for i:=1 to s-1 do begin perevod(a[i],q[i]);u:=u+q[i]; end;
if u mod 3 =0 then write(1) else write(0);
end.
Задача 3.
Дана строка символов (<=255). Удалить из неё все знаки препинания
(. , ? : ; -).
Решение:
Описываем знаки препинания как множество через Const. Вводим строку,
каждый символ строки проверяем на принадлежность множеству
препинаний. При принадлежности выполняем пустой оператор, если нет, то
выодим на экран символ строки.
Program Zadanie_3;
Const prepinania=['.',',','?',':',';','!','-'];
VAR s:string; i:byte;
Begin
read(s);
for i:=1 to length(s) do
if s[i] in prepinania then else write(s[i]);
end.
Задача 4.
Напишите программу подсчитывающую количество символов в
произвольном вами выбранном тексте.
Решение:
Т.к. нужно подсчитать количество символов в произвольном тексте, то
запрограммируем выбор текста, т.е. организуем в программе текстовый файл
(FileName := ''; задаем имя и путь к файлу, в котором находится выбранный
текст).Откроем файл для считывания, пока не достигнут конец файла и пока
не достигнут конец строки считываем текст посимвольно, увеличивая при
этом счетчик после каждого считывания, пропуская символ перевода строки.
Program Zadanie_4;
var n: Integer;
t: text;
FileName, s: string;c:char;
begin
FileName := '';
Assign(t, FileName);
Reset(t);
n:=0;
While not Eof(t) do
begin
while not EOLn(t) do begin
Read(t,c);
n:=n+1;
end;
ReadLn(t);
WriteLn ;
end;
Close(t);
Writeln(Количество используемых символов = ', n);
end.
Задача 5.
Лесенкой называется набор кубиков, в котором каждый более верхний слой
содержит кубиков меньше, чем предыдущий.
Напишите программу, вычисляющую число лесенок, которые можно
построить из N кубиков.
Решение:
Количество кубиков в верхнем слое будем уменьшать, а количество кубиков
в нижнем слое увеличивать на 1. Эти действия будем выполнять до тех пор,
пока количество кубиков в верхнем слое будет меньше, чем в нижнем случае.
Program Zadanie_5;
var n,n1,nn,x:integer;
begin
readln(n);
nn:=n; n1:=0;
x:=0;
while n>n1 do begin
x:=x+1; n:=n-1;
n1:=n1+1; end;
write(nn,' кубиков = ',x-1,' лесенок');
end.
Download