Title: [C++] Fraction Author: GGMethos Pastebin link: http://pastebin.com/N4dxb6B8 First Edit: Tuesday 20th of November 2012 03:08:10 PM CDT Last Edit: Tuesday 20th of November 2012 03:08:10 PM CDT #include #include using namespace std; class Fraction { public: Fraction( ); Fraction(int, int); void reduce( ); void setFraction(int , int ); void getFraction(int&, int&); void display( ); friend const Fraction operator + (const Fraction& lhs, const Fraction& rhs); friend const Fraction operator -  (const Fraction& lhs, const Fraction& rhs); friend const Fraction operator * (const Fraction& lhs, const Fraction& rhs); friend const Fraction operator /  (const Fraction& lhs, const Fraction& rhs); private: int myNumerator, myDenominator, myGCF; }; Fraction :: Fraction():myNumerator(0), myDenominator(1) {} Fraction :: Fraction(int n, int d) { myNumerator = n; myDenominator = d; reduce( ); } void Fraction :: reduce() {int gcf; bool finished=false;   if (myDenominator == 0) myDenominator = 1; if (myNumerator < 0 && myDenominator < 0) {myNumerator = -myNumerator; myDenominator= -myDenominator; } if (myNumerator > 0 && myDenominator < 0) {myNumerator= -myNumerator; myDenominator= -myDenominator; } if (abs(myNumerator) > abs(myDenominator))  // set gcf to larger of denominator / numerator gcf = abs(myDenominator); else gcf = abs(myNumerator); while ( !finished && gcf  >= 2 ) { if ( myNumerator % gcf == 0 && myDenominator % gcf == 0) // find greatest common factor {myNumerator = myNumerator / gcf; myDenominator = myDenominator / gcf;   finished = true; } gcf--; } } void Fraction :: setFraction(int n, int d) { myNumerator = n;   myDenominator = d; reduce( ); } void Fraction :: getFraction(int &n, int &d) { n = myNumerator; d = myDenominator;   reduce( );   } void Fraction :: display() {cout << myNumerator << "/" << myDenominator; } const Fraction  operator + (const Fraction& lhs, const Fraction& rhs)   { Fraction temp; temp.myDenominator = lhs.myDenominator * rhs.myDenominator; temp.myNumerator =  lhs.myNumerator * rhs.myDenominator +   rhs.myNumerator * lhs.myDenominator; temp.reduce(); return temp; } const Fraction  operator - ( const Fraction& lhs, const Fraction& rhs) { Fraction temp; temp.myDenominator = lhs.myDenominator * rhs.myDenominator; temp.myNumerator =  lhs.myNumerator * rhs.myDenominator - rhs.myNumerator * lhs.myDenominator; temp.reduce(); return temp; } const Fraction  operator * (const Fraction& lhs, const Fraction& rhs) { Fraction temp; temp.myNumerator = lhs.myNumerator * rhs.myNumerator; temp.myDenominator =  lhs.myDenominator * rhs.myDenominator; temp.reduce(); return temp; } const Fraction operator / (const Fraction& lhs, const Fraction& rhs) { Fraction temp; temp.myNumerator = rhs.myDenominator * lhs.myNumerator; temp.myDenominator =  rhs.myNumerator * lhs.myDenominator; temp.reduce(); return temp; } int main( ) {Fraction frac1, frac2(2, 3), result; int n, d; cout << "  Fraction Class Program " << endl << endl; cout << " Enter the numerator, press enter, then enter the denominator followed by enter: "; cin >> n >> d; frac1.setFraction(n, d); result = frac1 + frac2; frac1.display (); cout << " + " ; frac2.display(); cout << " = "; result.display(); cout << endl; result = frac1 - frac2; frac1.display(); cout << " - "; frac2.display(); cout << " = ";             result.display(); cout << endl; result = frac1 * frac2; frac1.display(); cout << " * " ; frac2.display(); cout << " = "; result.display(); cout << endl; result = frac1 / frac2; frac1.display(); cout << " / " ; frac2.display(); cout << " = "; result.display(); cout << endl; return 1; }