Написать функцию InvertDigits(k:longInt):LongInt меняющую порядок следования цифр целого положительного числа - Free Pascal
Формулировка задачи:
!Нельзя использовать строковый тип данных.
!Не рекомендуется изменять остальной код программы.
!Если при нажатии Save пропадает часть кода, измените выражения, в которых используется знак 'меньше'. Например a 'меньше' b замените на b>a. Знак "не равно" может быть заменен конструкцией not(a=b).
}
Program Prog_Sam_13_02;
{Функция подсчитывает количество цифр в числе}
Function CountDigits(k:longInt):byte;
Var
count:byte;
begin
count:=0;
while k <>0 do
begin
count:=count+1;
k:=k div 10;
end;
CountDigits:=count;
end;
{Функция возведения числа 10 в целую степень К}
Function Power10(k:byte):comp;
Var
Z:Comp;
i:byte;
begin
z:=1;
For i:=1 To k do Z:=Z*10;
Power10:=z
end;
{Напишите код функции InvertDigits ниже}
Var
Left, Right: LongInt;
Count : word;
i : LongInt;
Begin
Write('Введите левую границу интервала: ');
Read(Left);
Write('Введите правую границу интервала: ');
Read(Right);
Count:=0;
For i:=Left to Right do
If i=InvertDigits(i) Then Count:=Count+1;
Writeln('На интервале от ', Left,' до ', Right,
' число перевертышей равно ', Count);
end.Решение задачи: «Написать функцию InvertDigits(k:longInt):LongInt меняющую порядок следования цифр целого положительного числа»
textual
Листинг программы
function InvertDigits(k:longint):longint;
var m,n:longint;
c:byte;
begin
n:=k;
m:=0;
while n>0 do
begin
c:=n mod 10;
m:=m*10+c;
n:=n div 10;
end;
InvertDigits:=m
end;
var Left, Right: LongInt;
Count : word;
i : LongInt;
begin
repeat
write('Введите левую границу интервала >0: ');
readln(Left);
until Left>0;
repeat
write('Введите правую границу интервала >',Left,': ');
readln(Right);
until Right>Left;
Count:=0;
for i:=Left to Right do
if i=InvertDigits(i) Then Count:=Count+1;
writeln('На интервале от ', Left,' до ', Right,' число перевертышей равно ', Count);
readln
end.
Объяснение кода листинга программы
- Написана функция InvertDigits(k:longint):longint, которая меняет порядок следования цифр целого положительного числа k.
- В функции используется переменная m для хранения результата, переменная n для хранения числа, полученного в результате деления k на 10, и переменная c для хранения последней цифры числа n.
- В цикле while n>0 происходит поочередное вычисление последней цифры числа n, ее добавление к m и деление n на 10.
- В конце функции m присваивается значение k.
- В основной программе объявлены переменные Left, Right, Count и i.
- В цикле repeat-until пользователю предлагается ввести левую границу интервала.
- В цикле repeat-until пользователю предлагается ввести правую границу интервала.
- В цикле for перебираются числа в заданном интервале и проверяется, является ли число перевертышем (равным результату функции InvertDigits).
- В конце программы выводится количество найденных перевертышей.