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.
Неувязка в строке 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))
Саричев
Вадим
спасибо
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
выпиши в свою тетрадь те правила этикета которые тебе не были
Разные вопросы.
Анна хорошо учится у неё много подруг свободное от учёбы время
Обществознание.
10) Килограмм конфет дороже килограмма печенья на 52 р. За 8
Математика.
Облако тегов