/*******************************************************/
// R.A. Hillyard
// funDevelopProcess3.cpp
// October 2001
//
// See funDevelopProcess1.cpp for project specs.
//
// The third stage implements the functions for each tasks
//
// When completed with this step we will have the complete
// shell of a working program. Now we just need to implement
// the function definitions one at a time
/*******************************************************/

#include<iostream>

using namespace std;

//function prototypes
char printMenu();                   //print menu of choices
int min(int a, int b);              //returns min of a and b
double max(double x, double y);     //returns max of x and y
void printLine(char ch, int count); //print count characters

int main()
  {
  char choice;  //char variable for user input
  int m, n;     //int variables for user input
  double p, q;  //double variables for user input

  while(true)              //run program until user chooses to quit
    {
    choice = printMenu();  //print menu - get choice

    if(choice == 'Q')      //if quit - break out of loop
      break;
    else if(choice == 'S') //else - call function to handle user request                  
      {
      cout << "Enter two integers: ";
      cin >> m >> n;
      cout << min(m,n) << " is the smallest\n";
      }
    else if(choice == 'L')                  
      {
      cout << "Enter two doubles: ";
      cin >> p >> q;
      cout << max(p,q) << " is the largest\n";
      }
    else if(choice == 'P')                  
      {
      cout << "Enter a character and how many to print:";
      cin >> choice >> n;
      printLine(choice, n);
      }
    }//end while true

  return 0;
  }//end main
/*******************************************************/
// printMenu - prints the menu of choices checks for valid input 
// and returns the upper case version of the user choice
/*******************************************************/
char printMenu()
  {
  char ch;  //this variable is local to the function

  do
    {
    cout << "\nWelcome to Function Developmen\n";
    cout << "------------------------------------\n";
    cout << "Choose one of the following\n";
    cout << "  S Find the smaller of two ints\n";
    cout << "  L Find the largest of two doubles\n";
    cout << "  P Print a Number of Characters\n";
    cout << "  Q To quit\n\n";
    cout << "Enter your choice: ";
    cin >> ch;
    ch = toupper(ch);
    }while(ch != 'S' && ch != 'L' && ch != 'P' && ch != 'Q'); 
  
  return ch;   
  }
/*******************************************************/
// min - will return the smaller of two ints
/*******************************************************/
int min(int a, int b)
  {
  if(a <= b)
    return a;
  return b;
  }//end min
/*******************************************************/
/*******************************************************/
// max - will return the larger of two doubles
/*******************************************************/
double max(double x, double y)
  {
  if(x >= y)
    return x;
  return y;
  }//end max
/*******************************************************/
/*******************************************************/
// printLine - will print count ch's to the screen
/*******************************************************/
void printLine(char ch, int count)
  {
  for(int i = 0; i < count; i++)
    cout << ch << " ";
  cout << endl;
  }
/********************Program output*****************
Welcome to Function Developmen
------------------------------------
Choose one of the following
  S Find the smaller of two ints
  L Find the largest of two doubles
  P Print a Number of Characters
  Q To quit

Enter your choice: s
Enter two integers: 6 8
6 is the smallest

Welcome to Function Developmen
------------------------------------
Choose one of the following
  S Find the smaller of two ints
  L Find the largest of two doubles
  P Print a Number of Characters
  Q To quit

Enter your choice: S
Enter two integers: 9 2
2 is the smallest

Welcome to Function Developmen
------------------------------------
Choose one of the following
  S Find the smaller of two ints
  L Find the largest of two doubles
  P Print a Number of Characters
  Q To quit

Enter your choice: s
Enter two integers: 5 5
5 is the smallest

Welcome to Function Developmen
------------------------------------
Choose one of the following
  S Find the smaller of two ints
  L Find the largest of two doubles
  P Print a Number of Characters
  Q To quit

Enter your choice: q
*/