-->




Find Armstrong number in C++ with logic explanation and code dry run

10 comments
What is Armstrong number?
A number in which the sum of cube of its individual digits is equal to the number itself is called Armstrong number
For Example: 1^3 + 5^3 + 3^3 = 153
4 * 4 * 4 + 0 * 0 * 0 + 7 * 7 * 7 = 407 is an Armstrong number.


C++ program which takes input a number and check whether it is Armstrong Number or not



  #include<iostream>
  using namespace std;
  int main()
  {
  int armstrong=0,num=0,result=0,check;
  cout<<"Enter Number to find it is an Armstrong number?";
       cin>>num;
       check=num;
       for(int i=1;num!=0;i++){
           armstrong=num%10;
           num=num/10;
           armstrong=armstrong*armstrong*armstrong;
           result=result+armstrong;
       }
       if(result==check){
       cout<<check<<"  is an Armstrong Number";
       }
       else{
       cout<<check<<"  is NOT an Armstrong Number";
       }
       return 0;
    }



Note: Program can be coded in more than one ways above program is very simple so any one can understand the logic of program.

Recommended: Change program logic and do experiment with it for fast learning.

Image view of the program click on image to view large
Armstrong number code in c++ programming
Find Armstrong number in c++ code


Logic Explanation:

Concept Used:  for loop, if-else statement
  • To make logic firstly concept about Armstrong number should be very clear
  • We took some variables in which we take input, make calculations and produce results
  • Program take input number in variable num and store it in check variable
  • In for loop we take mod of num with 10 and stores it in variable Armstrong then we divide it with 10(below dry running will make more clear the working)
  • Then we take cubes of Armstrong variable and add it into result variable
  • When num=0; then for loop break after for loop using if else statement we test if our result equals to check variable then number is Armstrong else not.

Dry Running The Armstrong number Code:

Let input is equal to 153 

variable values before for loop
num=153; check=153; Armstrong=0; result=0;
variable values in for loop line by line
for i=1
Armstrong=3;
 num=15;
Armstrong=3*3*3=27 
result=0+27=27;

for loop condition check: num is not equal to zero loop will run again

for i=2
Armstrong=5;
num=1;
Armstrong=5*5*5=125 
result=27+125=152;

for loop condition: num is not equal to zero loop will run again

for i=3
Armstrong=1;
num=0;
Armstrong=1*1*1=1; 
result=152+1=153;


for loop condition: num is EQUAL TO ZERO loop will run again

Loop will break and if else condition will be checked as or result=153 and check=153 

10 comments:

  1. I will be Very thankful to you If you will help me for catalan number program in c++

    ReplyDelete
  2. Sir I have a question why armstrong is equal to 1 when I divide 5 by 10 is equal 0.5?

    for i=3
    Armstrong=1; //why this is equal to one. 5/10 = 0.5
    num=0;
    Armstrong=1*1*1=1;
    result=152+1=153;

    ReplyDelete
    Replies
    1. when i=3 then Armstrong is equal to 1.53. and since its an "int" not a float, it will be converted to 1. when i=4 though, Armstrong will be 0.153 and that's 0.

      Delete
  3. works only if the number is less than 1000

    ReplyDelete
  4. works only if the number is less than 1000

    ReplyDelete