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