Написать функцию 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.

Объяснение кода листинга программы

  1. Написана функция InvertDigits(k:longint):longint, которая меняет порядок следования цифр целого положительного числа k.
  2. В функции используется переменная m для хранения результата, переменная n для хранения числа, полученного в результате деления k на 10, и переменная c для хранения последней цифры числа n.
  3. В цикле while n>0 происходит поочередное вычисление последней цифры числа n, ее добавление к m и деление n на 10.
  4. В конце функции m присваивается значение k.
  5. В основной программе объявлены переменные Left, Right, Count и i.
  6. В цикле repeat-until пользователю предлагается ввести левую границу интервала.
  7. В цикле repeat-until пользователю предлагается ввести правую границу интервала.
  8. В цикле for перебираются числа в заданном интервале и проверяется, является ли число перевертышем (равным результату функции InvertDigits).
  9. В конце программы выводится количество найденных перевертышей.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы