На промежутке найти числа, сумма цифр которых равна корню n-ой степени из этого числа: найти ошибку - Free Pascal
Формулировка задачи:
На заданном числовом промежутке требуется найти все числа, сумма цифр каждого из которых равна корню n-й степени из этого числа, где n - количество цифр числа.
Вот все числа: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 81, 512, 2401. Но при вводе, например, промежутка от 600 до 1000 программа "молчит", а надо вывести, мол таких чисел нет.
uses crt; var m,n,i,j,sum,step,x: longint; c: integer; s,s2:string; Begin repeat clrscr; writeln('vvedite nashalo otrezka'); readln(n); writeln('vvedite konec otrezka'); readln(m); until m>n; for i:=n to m do begin str(i,s); for j:=1 to length(s) do begin val(s[j],x,c); sum:=sum+x; end; step:=sum; for j:=1 to length(s) do step:=step*sum; str(step,s2); if s=s2 then write(s,' ') ; sum:=0; end; readln;end.
Решение задачи: «На промежутке найти числа, сумма цифр которых равна корню n-ой степени из этого числа: найти ошибку»
textual
Листинг программы
step:=sum; for j:=1 to length(s)-1 do step:=step*sum; str(step,s2);
Объяснение кода листинга программы
- Переменная
sum
инициализируется значением 1. - Переменная
step
инициализируется значениемsum
. - Запускается цикл
for
, который выполняется от 1 доlength(s)-1
(гдеs
- это строка, содержащая число). - Внутри цикла перемножается значение переменной
step
на значение переменнойsum
. - Результат умножения присваивается переменной
step
. - После окончания цикла значение переменной
step
преобразуется в строку и присваивается переменнойs2
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д