News:

Accounts with zero posts and zero activity during the last months will be deleted periodically to fight SPAM!

Main Menu

Error in an Armstrong number. with other IDE it results fine.

Started by ramanuj.in, January 31, 2013, 04:21:45 PM

Previous topic - Next topic

ramanuj.in

Please find error in the program code copied below also attached in .c file.

Input: 153
Result: Not an Armstrong number
Expected:  An Armstrong number
Error: Computing pow(5) resulting 124, though it shall give the correct value.

Procedure: Storing 5 in array of lane[1] then storing pow(lane[1],5) in array of cube[1]. Cube[1] resulting a erogenous value of 124 but it shall give the correct value 125.

Please find the solution. And let me know.

Thank you,
Regards,
Ramanuj Dad  

Code:

#include <stdio.h>
#include <conio.h>
#include <math.h>

void main()
{
int gnt,ent,lane[5],j,cube[5];

j=0;lane[0]=0;lane[1]=0;lane[2]=0;lane[3]=0;lane[4]=0;lane[5]=0;ent=0;gnt=0;
cube[0]=0;cube[1]=0;cube[2]=0;cube[3]=0;cube[4]=0;cube[5]=0;

printf("Enter any number between from 0 to 100000:");
scanf("%d",&gnt);

ent=gnt;

   printf("\nThis is number printed from each array location:");

   if(ent>=10000 && ent<=99999)
   {
       lane[j]=ent/10000;
       ent=ent-(lane[j]*10000);
       printf("%d",lane[j]);
       j++;
   }

   if(ent>=1000 && ent<=9999)
   {
       lane[j]=ent/1000;
       ent=ent-(lane[j]*1000);
       printf("%d",lane[j]);
       j++;
   }

   if(ent>=100 && ent<=999)
   {
       lane[j]=ent/100;
       ent=ent-(lane[j]*100);
       printf("%d",lane[j]);
       j++;
   }

   if(ent>=10 && ent<=99)
   {
       lane[j]=ent/10;
       ent=ent-(lane[j]*10);
       printf("%d",lane[j]);
       j++;
   }

   if(ent>=1 && ent<=9)
   {
       lane[j]=ent/1;
       ent=ent-(lane[j]*1);
       printf("%d",lane[j]);
       j++;
   }

   cube[0]=pow(lane[0],3);
   cube[1]=pow(lane[1],3);
   cube[2]=pow(lane[2],3);
   cube[3]=pow(lane[3],3);
   cube[4]=pow(lane[4],3);

   if(cube[0]+cube[1]+cube[2]+cube[3]+cube[4]==gnt)
   {
       printf("\n\n%d is an armstrong number.",gnt);
   }
   else
   {
       printf("\n\n%d is not an armstrong number.",gnt);
   }

   /*printf("\nlane [1] is %d, cube [1] is %d",lane[1],cube[1]);*/

}

[attachment deleted by admin]

jarod42

Unrelated to CodeBlocks.

Note that you have a buffer overflow by assigning lane[5] and cube[5].

Jenna

Please respect the forum rules and do not ask questions not related to C::B in this forum/website.
Thank you !

Topic locked !