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 < > 0) do begin b: = a2 mod 10; a2: = a2 div 10; c: = (b*b*b); d: = d+c; end; if (a = d) then writeln('число армстронга ==> ', a); end; end.
210
416
Ответы на вопрос:
Более изящное решение : ) проблема в строке c: = (b*b*b); ты ищешь сумму кубов, а для 4-значных чисел нужно искать сумму 4-х степеней. нужно проверять число а: если от 100 до 999, то выполняем c: = (b*b*b); а если от 1000 до 9999, то выполняем c: = (b*b*b*b); код ниже работает и выдаёт результат: число армстронга ==> 153 число армстронга ==> 370 число армстронга ==> 371 число армстронга ==> 407 число армстронга ==> 1634 число армстронга ==> 8208 число армстронга ==> 9474 **************************************************************** var a,b,c,d,a2: integer; begin for a: = 100 to 9999 do begin d: =0; a2: =a; while (a2 < > 0) do begin b: = a2 mod 10; a2: = a2 div 10; if a< 1000 then c: = (b*b*b) else c: = (b*b*b*b); d: = d+c; end; if (a = d) then writeln('число армстронга ==> ', a); end; end.
Популярно: Информатика
-
ЛадаАндреева12.10.2020 12:08
-
спасибо8816.01.2020 09:52
-
hadika200606.05.2022 17:32
-
Крахмал1612.01.2022 02:05
-
genЕsis30.04.2022 19:19
-
пппп10313.01.2021 04:39
-
Evgen2100zzz20.09.2022 00:58
-
annaerkina21.05.2022 02:14
-
romchik23828.09.2021 11:46
-
Школьник755507.07.2020 16:06