/******************************************************************/
// R. A. Hillyard
// factorial.cpp
// last modified: 02/15/2001
// 
//  program to calcualte a factorial n where n is entered by the user
/******************************************************************/
#include<iostream>

using namespace std;

int main()
  {
  bool flag = true;

  while(flag)
    {
    int product = 1;  //hold the result 
    int n = 0;        //hold user input
  
    cout << "enter a positive integer less than 13 (0 to quit): ";
    cin >> n;
  
    //check for valid input
    //loop while input is out or range
    while(n > 12 || n < 0)
      {
      cout << n << " is invalid try again!\n";
      cout << "enter a positive integer less than 13 (0 to quit): ";
      cin >> n;
      }

    //if sentinal value - set flag to false to exit loop 
    if(n == 0)
      flag = false;

    //input is ok - now compute the factorial
    else
      {  
      int j = 1;

      while(j <= n)
        {
        product *= j;
        j++;
        }

      cout << n << " factorial is equal to: " << product << endl;
      }//end else
    }//end while flag
  return 0;
  }//end main
/******************************************************************/
enter a positive integer less than 13 (0 to quit): 3
3 factorial is equal to: 6
enter a positive integer less than 13 (0 to quit): 4
4 factorial is equal to: 24
enter a positive integer less than 13 (0 to quit): 9
9 factorial is equal to: 362880
enter a positive integer less than 13 (0 to quit): 12
12 factorial is equal to: 479001600
enter a positive integer less than 13 (0 to quit): 16
16 is invalid try again!
enter a positive integer less than 13 (0 to quit): 13
13 is invalid try again!
enter a positive integer less than 13 (0 to quit): -8
-8 is invalid try again!
enter a positive integer less than 13 (0 to quit): 0