Более изящное решение : ) проблема в строке 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.
Никитина580
25.07.2021
Более изящное решение : ) проблема в строке 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.
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Напишите прграмму на dev c++ с библиотекой graphics.h, чтобы появился рисунок старого телефона