25 Банкетов ЗА ОТВЕТ.Добрый денек, прошу поправить мой код. Его сущность

25 Раутов ЗА ОТВЕТ.
Благой денек, прошу поправить мой код. Его сущность заключается в нахождении чисел Армстронга в интервале от 100 до 9999 ,но глюк этого кода содержится в том что он обретает числа только в интервале от 100 до 999. Прошу подмоги.

var a,b,c,d,a2:integer;
begin

for a:=100 to 9999 do begin
d:=0;
a2:=a;
while (a2 lt;gt; 0) do begin
b:= a2 mod 10;
a2:= a2 div 10;
c:= (b*b*b);
d:= d+c;
end;

if (a = d) then writeln('число армстронга ==gt; ', a);
end;
end.

Задать свой вопрос
1 ответ
Более роскошное решение :)

Неувязка в строке c:= (b*b*b);
Ты разыскиваешь сумму кубов, а для 4-значных чисел необходимо разыскивать сумму 4-х ступеней. Нужно инспектировать число а: если от 100 до 999, то исполняем c:= (b*b*b); а если от 1000 до 9999, то исполняем c:= (b*b*b*b); 

Код ниже работает и выдаёт итог:
число Армстронга ==gt; 153
число Армстронга ==gt; 370
число Армстронга ==gt; 371
число Армстронга ==gt; 407
число Армстронга ==gt; 1634
число Армстронга ==gt; 8208
число Армстронга ==gt; 9474

****************************************************************
var a,b,c,d,a2:integer;
begin
for a:=100 to 9999 do begin
d:=0;
a2:=a;
while (a2 lt;gt; 0) do begin
b:= a2 mod 10;
a2:= a2 div 10;
if alt;1000 then c:= (b*b*b)
      else c:= (b*b*b*b);
d:= d+c;
end;
if (a = d) then writeln('число Армстронга ==gt; ', a);
end;
end.
Тема
В Паскале "популярно" писать не b*b*b*b, а sqr(sqr(b))
Саричев Вадим
спасибо
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт