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

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

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

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

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

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

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

  1. procedure PP(n: integer; var sum: integer); - объявляется процедура PP с двумя параметрами: n (целое число на вход) и sum (целое число по ссылке).
  2. var k, l, nn: integer; - объявляются целочисленные переменные k, l и nn.
  3. while nn>0 do - начинается цикл, который находит количество цифр в числе n.
    • l := nn mod 10; - получается последняя цифра числа nn.
    • k := k + 1; - увеличивается счётчик цифр.
    • nn := nn div 10; - удаляется последняя цифра числа.
  4. sum := 0; - инициализация переменной sum.
  5. while n>0 do - начинается цикл, который вычисляет сумму цифр, возведенных в степень k.
    • l := n mod 10; - получается последняя цифра числа n.
    • sum := sum + round(power(l, k)); - к сумме прибавляется значение, полученное возведением цифры в степень k.
    • n := n div 10; - удаляется последняя цифра числа.
  6. var i, a, b, sum: integer; - объявляются целочисленные переменные i, a, b и sum.
  7. readln(a, b); - вводятся значения для переменных a и b.
  8. for i := a to b do - начинается цикл, в котором вызывается процедура PP для каждого числа i в диапазоне от a до b.
    • PP(i, sum); - процедура PP вызывается для числа i.
    • if (i = sum) then writeln(i); - если i равно sum, то выводится значение i.
  9. end; - окончание цикла.
  10. end. - конец программы.

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


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

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

10   голосов , оценка 3.9 из 5

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

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

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