fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class Rational {
  5. int p;
  6. int q;
  7. public:
  8. Rational (int d=0, int n=1) : p{d}, q{n} { }
  9. Rational operator*(const Rational& r) const { // for curent object * r
  10. return Rational(p*r.p,q*r.q);
  11. }
  12. int numerator() const {return p; }
  13. int denominator() const { return q; }
  14. };
  15. Rational operator+(const Rational &a, const Rational &b) {
  16. return Rational(a.numerator()*b.denominator()+b.numerator()*a.denominator(),
  17. a.denominator()*b.denominator());
  18. }
  19. ostream& operator<<(ostream& os, const Rational &r) {
  20. return os << " ("<<r.numerator()<<"/"<<r.denominator()<<") ";
  21. }
  22.  
  23.  
  24. int main() {
  25. Rational two{2};
  26. Rational quarter{1,4};
  27. cout << two<<endl;
  28. cout << quarter<<endl;
  29. cout << quarter*2 <<endl;
  30. cout << quarter*two <<endl;
  31. cout << quarter*two+quarter <<endl;
  32. return 0;
  33. }
Success #stdin #stdout 0s 15232KB
stdin
Standard input is empty
stdout
 (2/1) 
 (1/4) 
 (2/4) 
 (2/4) 
 (12/16)