#ifndef Fraction_h #define Fraction_h #include //#include /* namespace ecci { */ class Fraction { private: long long numerator = 0; long long denominator = 1; public: /// Default constructor, conversion constructor Fraction(long long numerator = 0, long long denominator = 1) : numerator(numerator) , denominator(denominator) { simplify(); } bool read(); void print() const { std::cout << numerator << '/' << denominator; } bool simplify(); long long gcd() { return gcd(numerator, denominator); } // greatest common divisor static long long gcd(long long a, long long b); Fraction add(const Fraction& other) const; inline Fraction operator+(const Fraction& other) const { return add(other); } Fraction operator*(const Fraction& other) const; friend std::ostream& operator<<(std::ostream& out, const Fraction& fraction) { return out << fraction.numerator << '/' << fraction.denominator; } }; /* std::ostream& operator<<(std::ostream& out, const Fraction& fraction) { return out << fraction.numerator << '/' << fraction.denominator; } */ #endif // Fraction_h