Ри
Римма

Помогите нужно найти ошибки в коде

Задача такова: нужно найти все числа Армстронга от 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;
}
}
Что-то работает не правильно, и выводит только однозначные числа Армстронга

СЕ
Сергей Елькин

l = r % 10;
r в цикле-то не меняется.. .

Ну и много лишних дерганий, непонятных переменных и т. д. , которые путают программу.

Похожие вопросы
Помогите найти ошибку в коде
Помогите найти ошибку в коде c# с массивом
Помогите найти ошибку в коде программы!
помогите найти ошибку в коде C++
Помогите найти ошибку в коде!
помогите найти ошибку в коде с++
Помогите найти ошибки в коде программы
Помогите найти ошибку в коде на Си
Помогите найти ошибку в коде.
Помогите найти ошибку в коде Паскаль