Найти все числа Армстронга в диапазоне от a до b - Turbo Pascal (29460)
Формулировка задачи:
. Найти все числа Армстронга в диапазоне от a до b, где a и b – целые
натуральные числа. Написать подпрограмму, которая находит сумму кубов
цифр числа.
Нужно переделать в процедуру.
Решение задачи: «Найти все числа Армстронга в диапазоне от a до b»
textual
Листинг программы
procedure PP(n: integer; var res: 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;
res := sum;
end;
var
q, i, a, b: integer;
begin
writeln('Введите a,b');
readln(a, b);
for i := a to b do
begin
pp(i, q);
if i = q then
writeln(i);
end;
writeln;
end.
Объяснение кода листинга программы
- В процедуре PP объявлены следующие переменные: k, l, sum, nn - целые числа; a, b - входные значения, которые пользователь вводит.
- В цикле while nn > 0 выполняется поиск количества цифр в числе. Для этого используется оператор mod (остаток от деления) для получения последней цифры числа и оператор div (деление) для получения числа, состоящего из цифр, которые остались после удаления последней цифры.
- Затем переменная sum инициализируется нулем, так как сумма еще не была определена.
- В следующем цикле while n > 0 выполняется извлечение цифр из числа и подсчет суммы. Для этого используется оператор mod для получения последней цифры числа, оператор div для получения числа, состоящего из цифр, которые остались после удаления последней цифры, и оператор round для округления суммы до ближайшего целого числа.
- После завершения цикла n > 0 переменная sum будет содержать сумму всех цифр числа, возведенных в степень, равную количеству цифр в числе.
- В конце процедуры PP переменная res инициализируется значением суммы sum.
- В основной части программы объявлены переменные q, i, a, b - целые числа.
- В цикле for i := a до b выполняется вызов процедуры PP для каждого числа i.
- Если i равно q (то есть число i равно самому себе), то выводится значение i.
- В конце программы выводится символ новой строки.