## ajprincess 3 years ago Plzz help. write a C++ program to find the factorial of a number using keyboard input.

1. ajprincess

Suppose if the entered number is 5 then your output should be as follows. 5*4*3*2*1=120. How do u do this.

int n; // this is user input long fact = 1; for (int i = n; i>0; --i) { fact *= i; } cout<<fact; NOTE: Validate input (n>=0) before for loop.

3. ajprincess

output will b only 120 right?

4. ajprincess

My coding is this #include<iostream> using namespace std; void disfactorial(); int main() { disfactorial(); system("PAUSE"); return 0; } void disfactorial() { int num, fact=1; cout<<"Enter the number:"; cin>>num; for(int i=num;i>1;i--) { fact=fact*i; } cout<<fact<<endl; }

5. ajprincess

When I enter 5 I get the output as 120. I want it to display 5*4*3*2*1=120. Hw can I edit my code to display this?

6. eSpeX

A suggestion would be to implement your user interaction within the main: int main() { int fact; cout<<"Enter the number:"; cin>>num; fact = disfactorial(num); cout<<"The factorial of " + 5 + " is " + fact<<endl; system("PAUSE"); return 0; } Then define your disfactorial() method like this: int disfactorial(num) { int fact = 1, i; for (i = 1; i<num; i++) { fact =fact * (i+1); } return fact; } The output of the for loop, if the user enters 5, should be: i=1: 1*2 i=2: 2*3 i=3: 6*4 i=4: 24*5

7. eSpeX

To fix your code to produce 120 as the output you would just need to change your loop: from this: for(int i=num;i>1;i--) { fact=fact*i; } to this: for(int i=1;i<num;i++) { fact=fact*i+1; }

8. ajprincess

I dnt get the correct output.

9. eSpeX

I had some compilation errors, mixed java and c++ syntax. Try this: #include<iostream> using namespace std; int disfactorial(int x); int main() { int fact, num; cout<<"Enter the number:"; cin>>num; fact = disfactorial(num); cout<<"The factorial of " << 5 << " is " << fact<<endl; return 0; } int disfactorial(int num) { int fact = 1, i; for (i = 1; i<num; i++) { fact =fact * (i+1); } return fact; }

10. eSpeX

input: 5 output: Enter the number:The factorial of 5 is 120

11. ajprincess

I got the same output for my coding above.

12. ajprincess

I changed ur code and only compiled bt didnt get the output.

13. eSpeX

If you are getting 120 as the factorial of 5, which it is, then I must have misunderstood the question, I apologize. What were you having difficulty with?

14. ajprincess

I want the output like this 5*4*3*2*1=120 Nt jst 120

15. eSpeX

OH! You are looking at formatting..

16. eSpeX

With the smaller numbers it will be simple to just hard code them, but you could always create an array the size of your "num" and set each index as you step through your for loop. However you should consider that if this code were to be used on a large number, say 50, you would have text scrolling across the screen.

17. ajprincess

it's true. Thanxxxxxxxxxxxx a lot

18. agdgdgdgwngo

the factorial grows really fast, so you get integer overflow once you go after about 20! or something

19. agdgdgdgwngo

I wonder if C++ has bignums included in the library.

20. eSpeX

I'm fairly certain they have long unsigned double, that's fairly big. :)