Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- class Fraction
- {
- int numerator;
- int denominator;
- int gcd(int a, int b);
- void reduce();
- public:
- Fraction() : Fraction(1, 1) {}
- Fraction(int gotNum, int gotDenom) : numerator{ gotNum }, denominator{ gotDenom } { reduce(); }
- void setNumerator(int num) { numerator = num; reduce(); };
- int getNumerator() const { return numerator; };
- void setDenominator(int denom) { denominator = denom ? denom : 1; reduce(); };
- int getDenominator() const { return denominator; };
- void set(int num, int denom) { numerator = num; denominator = denom ? denom : 1; reduce(); }
- void print() const;
- Fraction add(const Fraction& fract);
- Fraction sub(const Fraction& fract);
- Fraction mul(const Fraction& fract);
- Fraction div(const Fraction& fract);
- Fraction add(int Int);
- Fraction sub(int Int);
- Fraction mul(int Int);
- Fraction div(int Int);
- };
- int Fraction::gcd(int a, int b)
- {
- while (b)
- {
- a %= b;
- std::swap(a, b);
- }
- return a;
- }
- void Fraction::reduce()
- {
- int gcdVal{ gcd(numerator, denominator) };
- numerator /= gcdVal;
- denominator /= gcdVal;
- if (denominator < 0 and numerator < 0)
- {
- denominator *= -1;
- numerator *= -1;
- }
- }
- Fraction Fraction::add(const Fraction& fract)
- {
- return Fraction{ numerator * fract.denominator + fract.numerator * denominator, denominator * fract.denominator };
- }
- Fraction Fraction::sub(const Fraction& fract)
- {
- return Fraction{ numerator * fract.denominator - fract.numerator * denominator, denominator * fract.denominator };
- }
- Fraction Fraction::mul(const Fraction& fract)
- {
- return Fraction{ numerator * fract.numerator, denominator * fract.denominator };
- }
- Fraction Fraction::div(const Fraction& fract)
- {
- return Fraction{ numerator * fract.denominator, denominator * fract.numerator };
- }
- Fraction Fraction::add(int Int)
- {
- return Fraction{ numerator + Int * denominator, denominator };
- }
- Fraction Fraction::sub(int Int)
- {
- return Fraction{ numerator - Int * denominator, denominator };
- }
- Fraction Fraction::mul(int Int)
- {
- return Fraction{ numerator * Int, denominator };
- }
- Fraction Fraction::div(int Int)
- {
- return Fraction{ numerator, denominator * Int };
- }
- void Fraction::print() const
- {
- std::cout << '(' << numerator << " / " << denominator << ")";
- }
- int main()
- {
- Fraction a{ 1,2 };
- Fraction b{ 1,3 };
- int c{ 7 };
- std::cout << "a = "; a.print(); std::cout << " b = "; b.print(); std::cout << " c = " << c; std::cout << '\n';
- std::cout << "a + b = "; a.add(b).print(); std::cout << '\n';
- std::cout << "a - b = "; a.sub(b).print(); std::cout << '\n';
- std::cout << "a * b = "; a.mul(b).print(); std::cout << '\n';
- std::cout << "a / b = "; a.div(b).print(); std::cout << '\n';
- std::cout << "a + c = "; a.add(c).print(); std::cout << '\n';
- std::cout << "a - c = "; a.sub(c).print(); std::cout << '\n';
- std::cout << "a * c = "; a.mul(c).print(); std::cout << '\n';
- std::cout << "a / c = "; a.div(c).print(); std::cout << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment