C/C++

Есть программа подсчета числа армстронга. И она выдает нули где ошибка?

Int arm(int d)
{
int count = 0;
for (int i = 0; d > 0; i++) {
d /= 10;
count = count+1;
}
int sum = 0;
for (int i = 0; d > 0; i++) {
int g = pow((d % 10), count);
d = d / 10;
sum = sum + g;
}
return sum;
}
Олег Корянов
Олег Корянов
1 431
ты в первом цикле сократил d до нуля, поэтому условия второго цикла не выполняются
Попробуй так:

int arm(int d)
{
int f = d;
int count = 0;
for (int i = 0; f > 0; i++) {
f /= 10;
count = count+1;
}
int sum = 0;
for (int i = 0; d > 0; i++) {
int g = pow((d % 10), count);
d = d / 10;
sum = sum + g;
}
return sum;
}
АБ
Александр Бушуев
84 155
Лучший ответ
Ну что -сверим результаты? Я в лоб решала, безо всяких хитрых алгоритмов:
#include <iostream>
#include <cmath>
using namespace std; int main()
{ unsigned long long a = 1, b = 10, i, n, s, d;
for (d = 1; d < 10; d++) { cout << d << ": ";
for (i = a; i < b; i++) { n = i; s = 0; while (n)
{ s += n % 10; n /= 10; } if (pow(s, d) == i)
cout << i << ' '; } a *= 10; b *= 10;
cout << endl; } }
В десятичной системе до всех девятизначных чисел включительно:
а я в проверку на самовлюбленность они же числа Армстронга ввел число из многих 9.
и прога начала ругаться.