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

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

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

найти все числа Армстронга в диапазоне от а до b, где а и b целые натуральные числа. Вот функциия, помогите переделать в процедуру
function PP1(n: integer):integer;  //находит сумму цифр входящего числа,возведенных в степень,равную 3
var k,l,sum,nn: integer;
 
begin
sum:=0;
while n>0 do   //вытаскиваем в цикле цифры и считаем сумму....
  begin
l:=n mod 10;
sum:=sum+round(power(l,3));
n:=n div 10;
  end;
 PP1:=sum;
end;

function PP(n: integer):integer;  //находит сумму цифр входящего числа,возведенных в степень,равную количеству цифр в числе
var k,l,sum,nn: integer;
 
begin
 
k:=0; nn:=n;
while nn>0 do   //ищем количество цифр в числе
begin l:=nn mod 10;k:=k+1;nn:=nn div 10;end;
 
sum:=0;
while n>0 do   //вытаскиваем в цикле цифры и считаем сумму....
  begin
l:=n mod 10;
sum:=sum+round(power(l,k));
n:=n div 10;
  end;
 PP:=sum;
end;

var i,a,b: integer;
 
begin
 
writeln('Введите a,b');
readln(a,b);
 for i:=a to b do
 if (i=PP(i))then
 begin
    writeln(i, ';  сумма кубов цифр числа  ',pp1(i));
 
   end;
writeln;
 
end.

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

textual
Листинг программы
procedure PP(n: integer; var sum:integer);  //находит сумму цифр входящего числа,
                                            //возведенных в степень,равную количеству цифр в числе
var k,l,nn: integer;
begin
k:=0;
nn:=n;
while nn>0 do   //ищем количество цифр в числе
 begin
  l:=nn mod 10;
  k:=k+1;
  nn:=nn div 10;
 end;
sum:=0;
while n>0 do   //вытаскиваем в цикле цифры и считаем сумму....
 begin
  l:=n mod 10;
  sum:=sum+round(power(l,k));
  n:=n div 10;
 end;
end;
 
var i,a,b,sum: integer;
begin
writeln('Введите a,b');
readln(a,b);
for i:=a to b do
 begin
  PP(i,sum);
  if (i=sum)then writeln(i);//почему кубы? а не 3х значные, например 5,1634,54748?
 end;
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
Похожие ответы