Другие языки программирования и технологии
Написал прогу...не пашет... не знаю в чём проблема...
..не пашет...не знаю в чём проблема... Условия задачи... Натуральное число из 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.
Странно
" Например: 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);
--------------
?
" Например: 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);
--------------
?
А что такое 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;
Да и не понятно что ты выводишь здесь (см. указатель) .
Нигде в программе этой переменной не задаётся значение!
Ещё, при разработке программы, очень помогает вывод промежуточных значений (который, в окончательном варианте программы, можно убрать) .
К примеру в твоём случае:
....
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.
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
Проблема наверно в том, что ты тупанул ?
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.
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.
Похожие вопросы
- как написать прогу на Qbasic язык знаю!
- напишите проги в ПАСКАЛЕ плиз!!!очень надо.
- СРОЧНО ! Напишите прогу на Паскале
- можно ли написать прогу...
- Нужно написать программу, на нахождения бессектрисы треугольника, если пользователем задано длину плз напишите прогу С++
- Помогите написать прогу!!!
- Почему прога не пашет?
- Помогите плиз, написать прогу на Си++! Срочно очень нужно!
- Помогите написать прогу на паскале
- кто нить знает как в Дельфи написать прогу : Дан текст, если в тексте сушествует знак "+" то заменить его на "-"