ЦИФРЫ АРМСТРОНГА. Проблема с моей программой - цикл работает до 149, но создает проблему, как только доходит до 150.
Число Армстронга - это n-значное число, равное сумме N-й степени его цифр.
Итак, я должен напечатать числа Армстронга от 1 до 500. в общей сложности их насчитывается 12.
программа, которую я написал, на самом деле не печатала числа Армстронга более 9. поэтому я решил проверить ее, напечатав числа, которые я получаю из упомянутой выше "суммы".
вот как я узнал, что петля работает выше 149. Всякий раз, когда он достигает 150, программа каким-то образом вычитает 1 из "суммы".
Что я уже пробовал:
#include <iostream> #include <math.h> using namespace std; int main() { int di; for(int a = 1, b = a, c = a, sum = 0, digi = 0;a <= 150;a++, b = a, digi = 0, c = a, sum = 0) { for(b;b != 0;b /= 10, digi++); do { di = c % 10; sum += pow(di, digi); c /= 10; }while(c != 0); cout << sum << " "; // if(sum == a) cout << sc << " "; } }
Richard MacCutchan
Предложения:
- Начните с того, что дайте вашим переменным осмысленные имена, чтобы мы могли понять назначение каждой из них.
- Затем выньте все эти дополнительные выражения из ваших операторов for, чтобы мы могли понять, что они должны делать.
- Тогда добавьте несколько комментариев, чтобы код было легче понять.