#include "Rational.h" // constructor Rational::Rational(int n, int d) { set(n, d); } bool Rational::set(int n, int d) { if (d != 0) { num_ = n; den_ = d; return true; } else return false; } // accessor functions int Rational::num() const { return num_; } int Rational::den() const { return den_; } // returns decimal equivalent double Rational::decimal() const { return num_ / double(den_); } Rational Rational::operator+(const Rational &r2) const { Rational r; r.num_ = den_ * r2.num_ + r2.den_*num_; r.den_ = den_ * r2.den_; return r; } std::istream& operator>>(std::istream& is, Rational& r) { char c; is >> r.num_ >> c >> r.den_; return is; } std::ostream& operator<<(std::ostream& os, const Rational& r) { os << r.num() << "/" << r.den(); return os; } bool operator<(const Rational& r1, const Rational& r2) { //precondition: r1.den_>0, r2.den > 0 return (r1.num() * r2.den() < r2.num() * r1.den()); }