Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- class Fraction
- {
- int numerator;
- int denominator;
- public:
- Fraction(int numeratorP, int denominatorP) : numerator{ numeratorP }, denominator{ denominatorP }
- {
- std::cout << "Fraction constructed for -> " << this << '\n';
- }
- Fraction() :Fraction(1, 1) {}
- int getNumerator()const { return numerator; }
- int getDenominator()const { return denominator; }
- void setNumerator(int num) { numerator = num; }
- void setDenominator(int denom) { denominator = denom; }
- Fraction mul(const Fraction& frac) const
- {
- return Fraction{ numerator * frac.numerator, denominator * frac.denominator };
- }
- Fraction div(const Fraction& frac) const
- {
- return Fraction{ numerator * frac.denominator, denominator * frac.numerator };
- }
- Fraction& print()
- {
- std::cout << '(' << numerator << '/' << denominator << ')';
- return *this;
- }
- void print(const Fraction& frac)const
- {
- std::cout << '(' << frac.numerator << '/' << frac.denominator << ')';
- }
- const Fraction& print() const
- {
- std::cout << '(' << numerator << '/' << denominator << ')';
- return *this;
- }
- ~Fraction()
- {
- std::cout << "Fraction destructed for -> " << this << '\n';
- }
- // 2/3 + 1 -. 2/3 + 3/3 -> (2 + 3) / 3 -> 5 / 3
- Fraction& operator++() { numerator += denominator; return *this; }
- Fraction operator++(int)
- {
- Fraction old{ *this };
- //numerator += denominator;
- ++(*this);
- return old;
- }
- Fraction operator*(/*const Fraction* const this, */ const Fraction& right)const
- {
- return Fraction{ numerator * right.numerator, denominator * right.denominator };
- }
- Fraction operator*(int right)const
- {
- return Fraction{ numerator * right, denominator };
- }
- operator bool() { return numerator; }
- operator int() { return numerator / denominator; }
- operator float() { return numerator / denominator; }
- //friend Fraction operator*(const Fraction& left, const Fraction& right);
- //friend Fraction operator*(const Fraction& left, int right);
- friend bool operator==(const Fraction& left, const Fraction& right);
- };
- Fraction operator/(const Fraction& left, const Fraction& right)
- {
- return Fraction{ left.getNumerator() * right.getDenominator(), left.getDenominator() * right.getNumerator() };
- }
- //Fraction operator*(const Fraction& left, const Fraction& right)
- //{
- // return Fraction{ left.numerator * right.numerator, left.denominator * right.denominator };
- //}
- //
- //Fraction operator*(const Fraction& left, int right)
- //{
- // return Fraction{ left.numerator * right, left.denominator };
- //}
- //
- //Fraction operator*(int left, const Fraction& right)
- //{
- // //return Fraction{ left * right.getNumerator(), right.getDenominator() };
- // //return operator*(right, left);
- // return right * left;
- //}
- bool operator==(const Fraction& left, const Fraction& right)
- {
- return left.numerator == right.numerator and left.denominator == right.denominator;
- }
- int main()
- {
- Fraction f1{ 1,3 };
- Fraction f2{ 1,3 };
- int a{ 10 };
- int b{ 34 };
- int c{ a * b };
- Fraction f3{ f1 * 2 };
- if (f1)
- {
- }
- f3.print(); std::cout << '\n';
- }
Advertisement
Add Comment
Please, Sign In to add comment