Помощь - Поиск - Пользователи - Календарь
Полная версия: незнаю как назвать
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
compiler
Найдите все трёхзначные числа, равные сумме кубов своих цифр.
я думаю начинать надо с abc=100a+10b+c

заранее благодарен

Добавлено через 1 мин.
моя программа
var 
a,b,c,n:integer;
procedure q( var i,n:integer);
Begin
while n<>0 do begin
i:=number mod 10;
n:=n div 10;
End;
end;
Begin
for n:=99 to 1000 Do begin


a:=q(a,n);
b:=q(b,n);
c:=q(c,n);
if (n=a*a*a+b*b*b+c*c*c) then writeln(n);
end;
read(a);
end.


klem4
Код
for i := 1 to 9 do
for j := 0 to 9 do
  for k := 0 to 9 do begin
    T := i*100 + j * 10 + k;
    if i*i*i + j*j*j + k*k*k = T then writeln(T);
  end;
compiler
что значит <<Illegal assignment to for-loop variable "n">>
klem4
Цитата
что значит <<Illegal assignment to for-loop variable "n">>


По ходу ты в своей проге передаешь переменную цикла FOR как VAR параметр и пытаешься ее изменить в подпрограмме, нельзя так ...
compiler
Цитата(klem4 @ 24.03.2007 19:08) *

По ходу ты в своей проге передаешь переменную цикла FOR как VAR параметр и пытаешься ее изменить в подпрограмме, нельзя так ...

а почему так не работает ошибка <<Incompatible types: got "untyped" expected "SmallInt">>
var 
a,b,c,n:SmallInt;
procedure q( i,n:SmallInt);
Begin
while n<>0 do begin
i:=n mod 10;
n:=n div 10;
End;
end;
Begin
a:=0;
b:=0;
c:=0;
for n:=99 to 1000 Do begin
a:=q(a,n);
b:=q(b,n);
c:=q(c,n);
if (n=a*a*a+b*b*b+c*c*c) then writeln(n);
end;
read(a);
end.


PS поставь пожалуйста коментарии к своей проги, я непонял с циклами...
klem4
По поводу твоей проги smile.gif

Цитата

а почему так не работает ошибка <<Incompatible types: got "untyped" expected "SmallInt">>

Ты еще пытаешься переменной присвоить значение которое возвращает .... процедура, а она ничего не возвращает, потомучто она не функция smile.gif

А в приведенном мной коде все просто: Вместо того чтобы перебирать все числа от 100 до 999 и разбивать каждое на цифры, что ты пытаешься сделать, проще сделать 3 цикла, переменная первого цикла - первая цифра числа, второго - вторая, третьего - третья. Таким образом мы перебираем все возможноы комбинации от 100 до 999, в теле 3-го цикла, мы получаем значение числа с такими цифрами

Первая цифра умноженная на 100 + Вторая * 10 + Третья

В первой итерации это будет

1 * 100 + 0 * 10 + 0 = 100
И смотрим, равна ли она сумме кубов
1*1*1 + 0*0*0 + 0*0*0
compiler
все разобрался, спасибо...
volvo
FAQ -> Замечательные числа
(числа Армстронга)
compiler
Цитата(volvo @ 24.03.2007 19:36) *

FAQ -> Замечательные числа
(числа Армстронга)

и тебе спасибо...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.