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:
- 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);
- };
- 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)
- {
- Fraction result;
- result.set(numerator * fract.denominator + fract.numerator * denominator, denominator * fract.denominator);
- return result;
- }
- Fraction Fraction::sub(const Fraction& fract)
- {
- Fraction result;
- result.set(numerator * fract.denominator - fract.numerator * denominator, denominator * fract.denominator);
- return result;
- }
- Fraction Fraction::mul(const Fraction& fract)
- {
- Fraction result;
- result.set(numerator * fract.numerator, denominator * fract.denominator);
- return result;
- }
- Fraction Fraction::div(const Fraction& fract)
- {
- Fraction result;
- result.set(numerator * fract.denominator, denominator * fract.numerator);
- return result;
- }
- void Fraction::print() const
- {
- std::cout << '(' << numerator << " / " << denominator << ")";
- }
- int main()
- {
- Fraction a;
- Fraction b;
- a.set(1,2);
- b.set(1,3);
- std::cout << "a = "; a.print(); std::cout << " b = "; b.print(); 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';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment