Program

Aug 26, 2014 at 7:14pm
I am making a program to check if a number is a Armstrong number or not. A Armstrong number is a number in which the sum of the cube of the digits is equal to the number itself ( In 153 1*1*1+5*5*5+3*3*3=153). Please help. Thanks in advance.

#include<iostream.h>
#include<process.h>
void main()
{
int a,b,c,d,e,f;
cout<<"\t\tAMSTRONG NUMBER(0-999)";
cout<<"\n\nEnter the number=";
cin>>a;
b=a%10;
f=a/10;
c=a%10;
f=f/10;
d=c%10;
e=b*b*b+c*c*c+d*d*d;
if(a==e)
cout<<"\nThis is a Amrstrong number.";
else
cout<<"\nThis is not a Armstrong number.";
}
Last edited on Aug 26, 2014 at 7:23pm
Aug 26, 2014 at 7:47pm
I guess you can use a string stream, so extracting the digits would be easier.

Aceix.
Aug 26, 2014 at 7:47pm
main should return int, it should be iostream.h also why do you have process included?

As far as your problem what exactly are these supposed to be?
1
2
3
4
5
b=a%10; //right digit
f=a/10; //left 2 digits
c=a%10; //right digit
f=f/10; //arbitrary number divided by 10
d=c%10 //right digit mod 10 = right digit still 


Here is how I would do it
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>

int main()
{
    int Armstrong = 0;
    std::cout << "Please enter a number: ";
    std::cin >> Armstrong;
    
    int right = Armstrong % 10;
    int middle = Armstrong / 10 % 10;
    int left = Armstrong / 100;
    int sum = right * right * right + middle * middle * middle + left * left * left;
    
    std::cout << "The number " << Armstrong << " is " << (sum == Armstrong ? "" : "not") << " an Armstrong number." << std::endl;
    
    return 0;
}
Please enter a number: 152
The number 152 is not an Armstrong number.

...

Please enter a number: 153
The number 153 is  an Armstrong number.


*was missing third - for output
Last edited on Aug 26, 2014 at 7:48pm
Aug 26, 2014 at 8:49pm
Even if you fix your code, it will only work for up to three digits. I seem to recall that the largest Armstrong numbers are less than 1,000, but lets pretend we don't know that. So why not write a function that computes the sum of the cube of the digits:

1
2
3
4
5
6
7
8
9
10
int sumCubeDigits(int num)
{
    int result = 0;
    while (num) {
        int digit = num %10;    // get least significant digit
        result += digit*digit*digit;
        num %= 10;                 // shift num down one digit. e.g. 123 -> 12
    }
    return result;
}


Now a number is an Armstrong number if num == sumCubeDigits(num)
Topic archived. No new replies allowed.