#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;
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);
}