Помогите нужно найти ошибки в коде
Задача такова: нужно найти все числа Армстронга от 1 до k.
Числа Армстронга это числа, которые равны сумме своих цифр, возведённых в степень, равную количеству его цифр. Например: 153= (1*1*1)+(5*5*5)+(3*3*3).
Код:
int arm(int);
int _tmain(int argc, _TCHAR* argv[]) {
int k, s = 0, i, n;
cout << "Vvedite kol-vo 4isel: ";
cin >> k;
for (i = 1; i <= k; i++) {
n = arm(i);
s += n;
if (n == 1) {
cout << i << " ";
}
}
cout << endl;
cout << "Kol-vo 4isel Armstronga: " << s << endl;
system("pause");
return 0;
}
int arm(int r) {
{
int sum, g, l;
int h = r;
for (g = 0; h > 0; g++) {
h /= 10;
}
h = r;
for (sum = 0; h > 0;) {
l = r % 10;
sum += pow(float(l), g);
h /= 10;
}
if (sum == r)
return 1;
else
return 0;
}
}
Что-то работает не правильно, и выводит только однозначные числа Армстронга