Найти все числа Армстронга в диапазоне от а до 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.
- конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д