Перевести с C++ программу, которая считает числа Армстронга - C (СИ)
Формулировка задачи:
Вот программа которая считает числа Армстронга
#include<iostream>
using namespace std;
unsigned long intpower( unsigned long a, unsigned long n )
{
unsigned long b,k,p;
b=a;
k=n;
p=1;
while (k>0)
{
if (k%2 == 0)
{
b *=b;
k /=2;
}
else
{
p *=b;
k -=1;
}
}
return p;
}
void main()
{
int t =1;
const int MIN = 2;
const int MAX = 8;
int i, j, n, chislo, suma;
int a[MAX];
n=MIN;
for (j=MAX; j>0; j--)
{
a[MAX-j] = 0;
}
a[MAX-MIN]=1;
for (i=10; i<100000000; i++)
{
chislo=0;
for (j=n; j>0; j--)
{
chislo = chislo*10 + a[MAX-j];
}
suma=0;
for (j=n; j>0; j--)
{
suma += intpower(a[MAX-j], n);
}
if (chislo == suma) cout << chislo << " : " << t++ << "\n";
a[MAX-1]+=1;
for (j=MAX-1; j>0; j--)
{
if (a[j]>9)
{
a[j]=0;
a[j-1]+=1;
}
}
n=MAX;
while (a[MAX-n] == 0)
{
n--;
}
}
cout<<"\n natisnit Enter";
cin.get();
}Решение задачи: «Перевести с C++ программу, которая считает числа Армстронга»
textual
Листинг программы
if (chislo == suma) cout << chislo << " : " << t++ << "\n"; cout<<"\n natisnit Enter"; cin.get();
Объяснение кода листинга программы
- Пользователю предлагается ввести число.
- Программа сравнивает это число с суммой цифр этого числа.
- Если число равно сумме его цифр, то программа выводит это число и увеличивает счетчик на единицу.
- Затем программа выводит сообщение «natisnit Enter» и ожидает ввода пользователя.