Есть ответ 👍

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
Посмотреть ответы 2

Ответы на вопрос:


Более изящное решение : ) проблема в строке  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.
Ksenon102
4,6(70 оценок)

2^i=32 i=5 пять бит : )

Популярно: Информатика