home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / listings / v_10_07 / 1007056a < prev    next >
Text File  |  1992-05-06  |  1KB  |  59 lines

  1. #include <iostream.h>
  2.  
  3. class rational
  4.     {
  5. public:
  6.     rational() : num(0), denom(1) { }
  7.     rational(long n, long d = 1) : num(n), denom(d) { }
  8.     rational &operator+=(rational r);
  9.     rational &operator-=(rational r);
  10.     rational &operator*=(rational r);
  11.     rational &operator/=(rational r);
  12.     rational operator+();
  13.     rational operator-();
  14.     double to_double() { return (double)num / denom; }
  15.     friend ostream &operator<<(ostream &os, rational r);
  16. private:
  17.     long num, denom;
  18.     void simplify();
  19.     };
  20.  
  21. inline rational rational::operator+() { return *this; }
  22.  
  23. inline rational operator+(rational r1, rational r2)
  24.     {
  25.     return r1 += r2;
  26.     }
  27.  
  28. inline rational operator-(rational r1, rational r2)
  29.     {
  30.     return r1 -= r2;
  31.     }
  32.  
  33. inline rational operator*(rational r1, rational r2)
  34.     {
  35.     return r1 *= r2;
  36.     }
  37.  
  38. inline rational operator/(rational r1, rational r2)
  39.     {
  40.     return r1 /= r2;
  41.     }
  42.  
  43. inline rational operator++(rational &r)
  44.     {
  45.     return r += 1;
  46.     }
  47.  
  48. inline rational operator--(rational &r)
  49.     {
  50.     return r -= 1;
  51.     }
  52.  
  53. rational operator++(rational &r, int);
  54. rational operator--(rational &r, int);
  55.  
  56. istream &operator>>(istream &is, rational &r);
  57.  
  58.  
  59.