Найти все числа Армстронга в диапазоне от a до b - Turbo Pascal (29460)

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

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

. Найти все числа Армстронга в диапазоне от a до b, где a и b – целые натуральные числа. Написать подпрограмму, которая находит сумму кубов цифр числа. Нужно переделать в процедуру.
Листинг программы
  1. function PP(n: integer):integer; //находит сумму цифр входящего числа,возведенных в степень,равную количеству цифр в числе
  2. var k,l,sum,nn: integer;
  3. begin
  4. k:=0; nn:=n;
  5. while nn>0 do //ищем количество цифр в числе
  6. begin l:=nn mod 10;k:=k+1;nn:=nn div 10;end;
  7. sum:=0;
  8. while n>0 do //вытаскиваем в цикле цифры и считаем сумму....
  9. begin
  10. l:=n mod 10;
  11. sum:=sum+round(power(l,k));
  12. n:=n div 10;
  13. end;
  14. PP:=sum;
  15. end;
  16. var i,a,b: integer;
  17. begin
  18. writeln('Введите a,b');
  19. readln(a,b);
  20. for i:=a to b do
  21. if (i=PP(i))then
  22. writeln(i);
  23.  
  24. writeln;
  25. end.

Решение задачи: «Найти все числа Армстронга в диапазоне от a до b»

textual
Листинг программы
  1. procedure PP(n: integer; var res: integer);
  2. //находит сумму цифр входящего числа,возведенных в степень,равную количеству цифр в числе
  3. var
  4.   k, l, sum, nn: integer;
  5. begin
  6.   k := 0;
  7.   nn := n;
  8.   while nn > 0 do   //ищем количество цифр в числе
  9.   begin l := nn mod 10;k := k + 1;nn := nn div 10; end;
  10.   sum := 0;
  11.   while n > 0 do   //вытаскиваем в цикле цифры и считаем сумму....
  12.   begin
  13.     l := n mod 10;
  14.     sum := sum + round(power(l, k));
  15.     n := n div 10;
  16.   end;
  17.   res := sum;
  18. end;
  19.  
  20. var
  21.   q, i, a, b: integer;
  22.  
  23. begin
  24.   writeln('Введите a,b');
  25.   readln(a, b);
  26.   for i := a to b do
  27.   begin
  28.     pp(i, q);
  29.     if i = q then
  30.       writeln(i);
  31.   end;
  32.   writeln;
  33. end.

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

  1. В процедуре PP объявлены следующие переменные: k, l, sum, nn - целые числа; a, b - входные значения, которые пользователь вводит.
  2. В цикле while nn > 0 выполняется поиск количества цифр в числе. Для этого используется оператор mod (остаток от деления) для получения последней цифры числа и оператор div (деление) для получения числа, состоящего из цифр, которые остались после удаления последней цифры.
  3. Затем переменная sum инициализируется нулем, так как сумма еще не была определена.
  4. В следующем цикле while n > 0 выполняется извлечение цифр из числа и подсчет суммы. Для этого используется оператор mod для получения последней цифры числа, оператор div для получения числа, состоящего из цифр, которые остались после удаления последней цифры, и оператор round для округления суммы до ближайшего целого числа.
  5. После завершения цикла n > 0 переменная sum будет содержать сумму всех цифр числа, возведенных в степень, равную количеству цифр в числе.
  6. В конце процедуры PP переменная res инициализируется значением суммы sum.
  7. В основной части программы объявлены переменные q, i, a, b - целые числа.
  8. В цикле for i := a до b выполняется вызов процедуры PP для каждого числа i.
  9. Если i равно q (то есть число i равно самому себе), то выводится значение i.
  10. В конце программы выводится символ новой строки.

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


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

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

8   голосов , оценка 3.625 из 5

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

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

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