1/**************************************************************** 2 * NAME: Michael J. Radwin 3 * ACCT: mradwin 4 * FILE: Rational.H 5 * DATE: Sat Mar 4 01:47:16 EST 1995 6 * $Id: Rational.H 10 2002-07-09 12:24:59Z ejakowatz $ 7 ****************************************************************/ 8 9class Rational { 10 friend ostream & operator<<(ostream &output, const Rational &r); 11 friend Rational pow(const Rational &r, int exp); 12 friend Rational operator+(int n, const Rational &r); 13 friend Rational operator-(int n, const Rational &r); 14 friend Rational operator*(int n, const Rational &r); 15 friend Rational operator/(int n, const Rational &r); 16 friend int operator==(int n, const Rational &r); 17 friend int operator!=(int n, const Rational &r); 18 friend int operator< (int n, const Rational &r); 19 friend int operator> (int n, const Rational &r); 20 friend int operator<=(int n, const Rational &r); 21 friend int operator>=(int n, const Rational &r); 22 23public: 24 Rational(int num, int den = 1); 25 Rational(const Rational &r); 26 ~Rational(); 27 28 Rational operator+(const Rational &r) const; 29 Rational operator-(const Rational &r) const; 30 Rational operator*(const Rational &r) const; 31 Rational operator/(const Rational &r) const; 32 const Rational & operator= (const Rational &r); 33 const Rational & operator+=(const Rational &r); 34 const Rational & operator-=(const Rational &r); 35 const Rational & operator*=(const Rational &r); 36 const Rational & operator/=(const Rational &r); 37 38 Rational operator+(int r) const; 39 Rational operator-(int r) const; 40 Rational operator*(int r) const; 41 Rational operator/(int r) const; 42 const Rational & operator= (int r); 43 const Rational & operator+=(int r); 44 const Rational & operator-=(int r); 45 const Rational & operator*=(int r); 46 const Rational & operator/=(int r); 47 48 Rational operator-() const; 49 int operator! () const; 50 int operator==(const Rational &r) const; 51 int operator==(int r) const; 52 int operator!=(const Rational &r) const; 53 int operator!=(int r) const; 54 int operator< (const Rational &r) const; 55 int operator< (int r) const; 56 int operator> (const Rational &r) const; 57 int operator> (int r) const; 58 int operator<=(const Rational &r) const; 59 int operator<=(int r) const; 60 int operator>=(const Rational &r) const; 61 int operator>=(int r) const; 62 63private: 64 Rational() {} 65 static int compute_gcd(int a, int b); 66 static int gcd(int bigger, int smaller); 67 int n, d; 68}; 69 70// global prototypes 71ostream & operator<<(ostream &output, const Rational &r); 72Rational pow(const Rational &r, int exp); 73Rational operator+(int n, const Rational &r); 74Rational operator-(int n, const Rational &r); 75Rational operator*(int n, const Rational &r); 76Rational operator/(int n, const Rational &r); 77int operator==(int n, const Rational &r); 78int operator!=(int n, const Rational &r); 79int operator< (int n, const Rational &r); 80int operator> (int n, const Rational &r); 81int operator<=(int n, const Rational &r); 82int operator>=(int n, const Rational &r); 83