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