/********************************************************/
// R. A. Hillyard
// reduce.cpp
// Last Modified October 2001
//
// Get the numerator and denominator of a positive
// fraction from the user. Print it in reduces form
/********************************************************/

#include<iostream>
#include<cctype>


using namespace std;

int gcd(int x, int y);      //function prototype
//pre  conditions: x and y have been given valid values
//post conditions: will return the greatest common divisor for x and y

int main()
  {
  int top = 0;          //numerator
  int bottom = 0;       //denominator
  int greatest = 1;     //greatest common divisor
  char ch = 'Y';
  
  while(true)
    {
    cout << "Enter the numerator: ";    //get numerator
    cin >> top;
    cout << "Enter the denominator: ";  //get denominator
    cin >> bottom;
    
    greatest = gcd(top,bottom);         //call function
  
    //print results
    if(greatest == 1)
      cout << top << "/" << bottom << " is already reduced.\n";
    else
      cout << "reduced form: " << top/greatest << "/" << bottom/greatest << endl;
    cout << "Continue [Y/N] >";
    cin >> ch;
    if((toupper(ch) == 'N'))
      break;
    }
  return 0;
  }  
  
/********************************************************/
// Returns the greatest common divisor of the positive integers
// x and y. The Euclidean algorithm is used:
//    Calculate the remainder of x/y
//    If it's 0 the gcd is y.
//    Otherwise start again, replacing x with y with y with the remainder (x%y)
/********************************************************/
int gcd(int x, int y)
  {
  int c;     //store remainder
  
  while( (c = x%y) != 0 )
    {
    x = y;
    y = c;
    }//end while

  return y;  
  }//end of gcd