Написать функцию 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).
- В конце программы выводится количество найденных перевертышей.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д