Написать функцию InvertDigits(k:longInt):LongInt меняющую порядок следования цифр целого положительного числа - Free Pascal

Узнай цену своей работы

Формулировка задачи:

!Нельзя использовать строковый тип данных. !Не рекомендуется изменять остальной код программы. !Если при нажатии Save пропадает часть кода, измените выражения, в которых используется знак 'меньше'. Например a 'меньше' b замените на b>a. Знак "не равно" может быть заменен конструкцией not(a=b). }
Листинг программы
  1. Program Prog_Sam_13_02;
  2. {Функция подсчитывает количество цифр в числе}
  3. Function CountDigits(k:longInt):byte;
  4. Var
  5. count:byte;
  6. begin
  7. count:=0;
  8. while k <>0 do
  9. begin
  10. count:=count+1;
  11. k:=k div 10;
  12. end;
  13. CountDigits:=count;
  14. end;
  15. {Функция возведения числа 10 в целую степень К}
  16. Function Power10(k:byte):comp;
  17. Var
  18. Z:Comp;
  19. i:byte;
  20. begin
  21. z:=1;
  22. For i:=1 To k do Z:=Z*10;
  23. Power10:=z
  24. end;
  25. {Напишите код функции InvertDigits ниже}
  26.  
  27. Var
  28. Left, Right: LongInt;
  29. Count : word;
  30. i : LongInt;
  31. Begin
  32. Write('Введите левую границу интервала: ');
  33. Read(Left);
  34. Write('Введите правую границу интервала: ');
  35. Read(Right);
  36. Count:=0;
  37. For i:=Left to Right do
  38. If i=InvertDigits(i) Then Count:=Count+1;
  39. Writeln('На интервале от ', Left,' до ', Right,
  40. ' число перевертышей равно ', Count);
  41. end.

Решение задачи: «Написать функцию InvertDigits(k:longInt):LongInt меняющую порядок следования цифр целого положительного числа»

textual
Листинг программы
  1. function InvertDigits(k:longint):longint;
  2. var m,n:longint;
  3.     c:byte;
  4. begin
  5. n:=k;
  6. m:=0;
  7. while n>0 do
  8.  begin
  9.   c:=n mod 10;
  10.   m:=m*10+c;
  11.   n:=n div 10;
  12.  end;
  13. InvertDigits:=m
  14. end;
  15. var  Left, Right: LongInt;
  16.     Count      : word;
  17.     i          : LongInt;
  18. begin
  19. repeat
  20. write('Введите левую границу интервала >0: ');
  21. readln(Left);
  22. until Left>0;
  23. repeat
  24. write('Введите правую границу интервала >',Left,': ');
  25. readln(Right);
  26. until Right>Left;
  27. Count:=0;
  28. for i:=Left to Right do
  29. if i=InvertDigits(i) Then Count:=Count+1;
  30. writeln('На интервале от ', Left,' до ', Right,' число перевертышей равно ', Count);
  31. readln
  32. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы