#ifndef _rational_h #define _rational_h #include template inline Type abs(Type x) { if (x < Type(0)) return(-x); return x; } class Rational { public: Rational(int = 0, int = 1); Rational& operator = (const Rational& r); Rational operator - ()const;//unary minus Rational operator +=(const Rational &r); Rational operator -=(const Rational &r); Rational operator /=(const Rational &r); Rational operator *=(const Rational &r); int less (const Rational & )const; int equal (const Rational & )const; int lessEqual (const Rational & )const; int greater (const Rational & )const; int greaterEqual (const Rational &)const; int notEqual (const Rational & )const; istream& read(istream &s); ostream& print(ostream &s)const; private: void simpleRatio(); int numerator; int denominator; }; ostream& operator << (ostream &s, const Rational &r); istream& operator >> (istream &s, Rational& r); Rational operator + (const Rational & r, const Rational & s); Rational operator - (const Rational & r, const Rational & s); Rational operator * (const Rational & r, const Rational & s); Rational operator / (const Rational & r, const Rational & s); int operator < (const Rational & r, const Rational & s); int operator == (const Rational & r, const Rational & s); int operator <= (const Rational & r, const Rational & s); int operator > (const Rational & r, const Rational & s); int operator >= (const Rational & r, const Rational & s); int operator != (const Rational & r, const Rational & s); #endif