Найти все числа Армстронга в диапазоне от a до b - Turbo Pascal (29460)
Формулировка задачи:
. Найти все числа Армстронга в диапазоне от a до b, где a и b – целые
натуральные числа. Написать подпрограмму, которая находит сумму кубов
цифр числа.
Нужно переделать в процедуру.
Листинг программы
- 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
- writeln(i);
- writeln;
- end.
Решение задачи: «Найти все числа Армстронга в диапазоне от 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.
- В конце программы выводится символ новой строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д