Найти все числа Армстронга в диапазоне от а до 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.
Объяснение кода листинга программы
procedure PP(n: integer; var sum: integer);
- объявляется процедура PP с двумя параметрами: n (целое число на вход) и sum (целое число по ссылке).var k, l, nn: integer;
- объявляются целочисленные переменные k, l и nn.while nn>0 do
- начинается цикл, который находит количество цифр в числе n.l := nn mod 10;
- получается последняя цифра числа nn.k := k + 1;
- увеличивается счётчик цифр.nn := nn div 10;
- удаляется последняя цифра числа.
sum := 0;
- инициализация переменной sum.while n>0 do
- начинается цикл, который вычисляет сумму цифр, возведенных в степень k.l := n mod 10;
- получается последняя цифра числа n.sum := sum + round(power(l, k));
- к сумме прибавляется значение, полученное возведением цифры в степень k.n := n div 10;
- удаляется последняя цифра числа.
var i, a, b, sum: integer;
- объявляются целочисленные переменные i, a, b и sum.readln(a, b);
- вводятся значения для переменных a и b.for i := a to b do
- начинается цикл, в котором вызывается процедура PP для каждого числа i в диапазоне от a до b.PP(i, sum);
- процедура PP вызывается для числа i.if (i = sum) then writeln(i);
- если i равно sum, то выводится значение i.
end;
- окончание цикла.end.
- конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д