//Uses stdlib.h: void Rational::reduce() { const int FALSE = 0; const int TRUE = 1; int negative; //Set to TRUE if calling object is negative. if (denominator == 0) { cout << "Division by zero detected by reduce.\n"; exit(1); } if (numerator == 0) { denominator = 1; return; } if (numerator*denominator < 0) negative = TRUE; else negative = FALSE; numerator = abs(numerator); denominator = abs(denominator); for (int i = 2; i <= numerator; i++) { while (((numerator % i) == 0) && ((denominator % i) == 0)) { numerator = numerator/i; denominator = denominator/i; } } if (negative) numerator = -numerator; } Rational operator /(const Rational& r1, const Rational& r2) { Rational temp; temp.numerator = r1.numerator * r2.denominator; temp.denominator = r1.denominator * r2.numerator; temp.reduce(); return temp; }