Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Целочисленная арифметика1_6.doc
Скачиваний:
3
Добавлен:
21.07.2019
Размер:
76.8 Кб
Скачать
  1. Дано натуральное число. Выяснить является ли оно палиндромом, то есть читается справа налево и слева направо одинаково

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.

  1. Дано натуральное число. Выяснить соотношение между количествами двоек и пятерок в этом числе

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.

  1. Поменять местами первую и последнюю цифры данного натурального числа (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.

  1. Найти самую большую и самую маленькую цифры данного натурального числа

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.