// class for storing rational numbers that can be expressed as a ration a/b for // integers a and b (b != 0). #ifndef MY_RATIONAL_H #define MY_RATIONAL_H #include using namespace std; // class invariants: denominator > 0 and fraction is in lowest terms class rational { public: // pre : denominator != 0 rational(int numer = 0, int denom = 1); // returns the numerator part of this rational number int get_numerator() const; // returns the denominator part of this rational number int get_denominator() const; // overloaded -= operator rational & operator-=(const rational & rhs); // overloaded preincrement operator (++r) rational & operator++(); // overloaded postincrement operator (r++) rational operator++(int dummy); private: int numerator; int denominator; void fix_signs(); void reduce(); }; // overloaded << operator ostream & operator<<(ostream & out, const rational & value); // overloaded - operator rational operator-(const rational & lhs, const rational & rhs); // overloaded == operator bool operator==(const rational & lhs, const rational & rhs); // overloaded != operator bool operator!=(const rational & lhs, const rational & rhs); // overloaded < operator bool operator<(const rational & lhs, const rational & rhs); // overloaded <= operator bool operator<=(const rational & lhs, const rational & rhs); // overloaded > operator bool operator>(const rational & lhs, const rational & rhs); // overloaded >= operator bool operator>=(const rational & lhs, const rational & rhs); #endif