
- •Целочисленная арифметика
- •Дано натуральное число. Выяснить является ли оно палиндромом, то есть читается справа налево и слева направо одинаково
- •Дано натуральное число. Выяснить соотношение между количествами двоек и пятерок в этом числе
- •Найти самую большую и самую маленькую цифры данного натурального числа
- •Выяснить образуют ли цифры натурального числа возрастающую последовательность
Дано натуральное число. Выяснить является ли оно палиндромом, то есть читается справа налево и слева направо одинаково
Program z6;
Var n,m,k,:longint;
Begin
assign(input,'input.txt');
reset(input);
assign(output,'output.txt');
rewrite(output);
read(n);
m:=n; делаем копию числа
k:=0;
while m>0 do получаем число, записанное теми же
цифрами в обратном порядке
begin
k:=k*10+m mod 10;
m:=m div 10;
end;
if k=n then write(‘YES’) выводим результат
else write(‘NO’);
close(output);
End.
Дано натуральное число. Выяснить соотношение между количествами двоек и пятерок в этом числе
Program z7;
Var n,k2,k5,:longint;
Begin
assign(input,'input.txt');
reset(input);
assign(output,'output.txt');
rewrite(output);
read(n);
k2:=0;k5:=0;
while n>0 do
begin
if n mod 10=2 then inc(k2); если последняя цифра 2, то считаем ее
if n mod 10=5 then inc(k5); если последняя цифра 5, то считаем ее
n:=n div 10;
end;
if k2=k5 выводим результат
then write(‘k2=k5’)
else
if k2>k5
then write(‘k2>k5’)
else write(‘k2<k5’);
close(output);
End.
Поменять местами первую и последнюю цифры данного натурального числа (9<N<2*109)
Можно решить эту задачу, работая только в числовом формате. Но решение получается громоздким и некрасивым. Проще перевести число в строковой формат, а потом обратно. Вот это решение.
program obmencifr1;
Var
i,p,n:longint;
s:string;
c:char;
cod:integer;
Begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
read(n);
str(n,s); переводим в строковой формат
c:=s[1]; изображение первой цифры сохраняем в с
s[1]:=s[length(s)]; последний символ ставим на первое место
s[length(s)]:=c; а первый на последнее
val(s,n,cod); переводим строку в числовой формат
write(n); выводим результат
close(output);
End.
Можно все цифры числа поместить в одномерный массив, поменять местами первую и последнюю цифры и потом собрать все цифры в число.
Вот это решение.
program obmencifr2;
const nmax=10;
Var a:array[1..nmax] of byte;
i,j,p,n:longint;
Begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
read(n);
i:=0;
while n>0 do цифры числа записываем в массив
begin
inc(i);
a[i]:=n mod 10;
n:=n div 10;
end;
p:=a[1]; меняем местами первый и последний элементы массива
a[1]:=a[i];
a[i]:=p;
for j:=i downto 1 do собираем цифры массива в число
n:=n*10+a[j];
write(n); выводим результат
close(output);
End.
Найти самую большую и самую маленькую цифры данного натурального числа
program maxmincifri;
Var n,max,min,p:longint;
Begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
read(n);
max:=0; min:=9; в max кладут самую маленькую цифру, в min
самую большую
while n>0 do
begin
p:=n mod 10; находим последнюю цифру
if max<p then max:=p; сравниваем
if min>p then min:=p;
n:=n div 10;
end;
write(min,' ',max);
close(output);
End.