Другие языки программирования и технологии

Написал прогу...не пашет... не знаю в чём проблема...

..не пашет...не знаю в чём проблема... Условия задачи... Натуральное число из N цифр является числом Армстронга, если сумма его цифр, возведенных в N-ую степень, равна самому числу. Например:153=13+53 +33 . Получить все числа Армстронга, состоящие из 3 цифр. program lsba2; uses crt; var i,j,k : integer; n,m : longint; begin clrscr; begin for i:=1 to 9 do for j:=0 to 9 do for k:=0 to 9 do begin n:=1000*i+100*j+10*k+1; if i*i*i+j*j*j+k*k*k=m then writeln (m); end; end; readln; end.
Sasha Frolov
Sasha Frolov
492
Странно
" Например: 153=13+53 +33 " А почему пример не соответствует условию и вообще не верен?? ?

----------
n:=1000*i+100*j+10*k+1;
if i*i*i+j*j*j+k*k*k=m
-----------
n тут получится явно 4х, а не 3х значное
и m не инициализировано и непонятно с чем сравнение идёт

может ищется
----------
n:=100*i+10*j+k;
if i*i*i+j*j*j+k*k*k=n
then writeln (n);
--------------
?
Matvey Vasiliev
Matvey Vasiliev
75 320
Лучший ответ
А что такое m?
Нигде в программе этой переменной не задаётся значение!
Ещё, при разработке программы, очень помогает вывод промежуточных значений (который, в окончательном варианте программы, можно убрать) .
К примеру в твоём случае:
....
begin
WriteLn('i = ', i, ' j = ', j, ' k = ', k);
n:=1000*i+100*j+10*k+1;
WriteLn('n = ', n);
WriteLn('i*i*i+j*j*j+k*k*k = ', i*i*i+j*j*j+k*k*k);
if i*i*i+j*j*j+k*k*k=m
then writeln (m); { <-------}
end;
Да и не понятно что ты выводишь здесь (см. указатель) .
var i,j,k,a,b:integer;
begin
for i:=1 to 9 do for j:=0 to 9 do for k:=0 to 9 do
begin a:=i+j+k; b:=100*i+10*j+k; if a*a*a=b then writeln(b) end;
readln
end.
Кроме тогго n - у тебя получается ЧЕТЫРЕХзначным и зачем-то +1
Sher Turganbaev
Sher Turganbaev
2 237
Проблема наверно в том, что ты тупанул ?
program lsba2;
var i,a,b,c,m : integer;
begin
for i:=100 to 999 do
begin
m:=i;
a:=m mod 10;
m:=m div 10;
b:=m mod 10;
m:=m div 10;
c:=m mod 10;
if (sqr(a)*a+sqr(b)*b+sqr(c)*c)=i then writeln(i);
end;
end.