//* Examples of using different for loops to do the same task: factorial *

#include <iostream> using namespace std; /**********************/ long int fact1 ( int n ) { long int result=1; int cnt; for (cnt=2; cnt<=n; cnt++) result*=cnt; return(result); } /**********************/ long int fact2 ( int n ) { long int result=1; int cnt; for (cnt=n; cnt>1; cnt--) result*=cnt; return(result); } /**********************/ long int fact3 ( int n ) { long int result=1; for ( ; n>1; n--) result*=n; return(result); } /**********************/ long int fact4 ( int n ) { long int result=1; for ( ; n>1; result*=(n--)) ; return(result); } /**********************/ long int fact5 ( int n ) { long int result=1; int cnt=2; while (cnt<=n) { result*=cnt; cnt++; } return(result); } /**********************/ long int fact6 ( int n ) { long int result=1; int cnt=n; while (cnt>1) { result*=cnt; cnt--; } return(result); } /**********************/ long int fact7 ( int n ) { long int result=1; while (n>1) { result*=n; n--; } return(result); } /**********************/ long int fact8 ( int n ) { long int result=1; int cnt=2; // do-while loop is not very feasable // you have to check whether to do loop first if (cnt>n) return(result); do { result*=cnt; cnt++; } while (cnt<n); return(result); } /**********************/ int main () { int para; int mode; long int result; for(;;) { cout << "Choose the metod (1-8) M="; cin >> mode; if (mode==0) break; cout << "Calculate factorial for N="; cin >> para; switch(mode) { case 1: result=fact1(para); break; case 2: result=fact2(para); break; case 3: result=fact3(para); break; case 4: result=fact4(para); break; case 5: result=fact5(para); break; case 6: result=fact6(para); break; case 7: result=fact7(para); break; case 8: result=fact7(para); break; default: result=0; } if (mode>=1 && mode <=8) cout << para << "!=" << result << endl; else cout << "no such method, try again" << " or select 0 to end." << endl; } cout << "Thank you for testing how do I run." << endl; return(0); }