Untitled

 avatar
unknown
plain_text
a year ago
3.6 kB
7
Indexable
#include <iostream>
using namespace std;

class Fraction {
private:
    int numerator;
    int denominator;

public:
    // Constructors
    Fraction(int num = 0, int den = 1) : numerator(num), denominator(den)
{
        if (denominator == 0)
            {
            cout << "Error: Denominator cannot be zero. Setting denominator to 1." << endl;//checking if the denominator zero or not?
            denominator = 1;//if denominator is zero make it 1 and return the value 1
        }
        simplify();
    }

    // Getter functions
    int getNumerator() const {
        return numerator;
    }

    int getDenominator() const {
        return denominator;
    }

    // Arithmetic operators
    //addition
    Fraction operator+(const Fraction& other) const {
        int num = numerator * other.denominator + other.numerator * denominator;
        int den = denominator * other.denominator;
        return Fraction(num, den);
    }
//subtraction
    Fraction operator-(const Fraction& other) const {
        int num = numerator * other.denominator - other.numerator * denominator;
        int den = denominator * other.denominator;
        return Fraction(num, den);
    }
//multiply
    Fraction operator*(const Fraction& other) const {
        int num = numerator * other.numerator;
        int den = denominator * other.denominator;
        return Fraction(num, den);
    }
//divide
    Fraction operator/(const Fraction& other) const {
        int num = numerator * other.denominator;
        int den = denominator * other.numerator;
        return Fraction(num, den);
    }

    // Comparison operators
    bool operator==(const Fraction& other) const {
        return (numerator == other.numerator && denominator == other.denominator);
    }

    bool operator!=(const Fraction& other) const {
        return !(*this == other);
    }

    // Simplify the fraction using gcd(greatest common factor)
    void simplify() {
        int gcd_val = gcd(numerator, denominator);
        numerator /= gcd_val;
        denominator /= gcd_val;
        // Making sure denominator is positive
        if (denominator < 0) {
            numerator *= -1;
            denominator *= -1;
        }
    }

    // Helper function to calculate gcd
    int gcd(int a, int b) {
        while (b != 0) {
            int temp = b;
            b = a % b;
            a = temp;
        }
        return a;
    }
};

// Overload output stream operator to print Fraction object
ostream& operator<<(ostream& o, const Fraction& frac) {
    o << frac.getNumerator() << "/" << frac.getDenominator();
    return o;
}

// Function to get user input for a Fraction
Fraction get() {
    int num, den;

    cout << "Enter numerator: ";
    cin >> num;

    cout << "Enter denominator: ";
    cin >> den;

    return Fraction(num, den);
}

int main() {
    system("color f0");
    cout << "Enter fraction A:" << endl;
    Fraction a = get();

    cout << "Enter fraction B:" << endl;
    Fraction b = get();

    Fraction sum = a + b;
    Fraction difference = a - b;
    Fraction product = a * b;
    Fraction quotient = a / b;

    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    cout << "a + b = " << sum << endl;
    cout << "a - b = " << difference << endl;
    cout << "a * b = " << product << endl;
    cout << "a / b = " << quotient << endl;

    if (a == b) {
        cout << "a is equal to b" << endl;
    } else {
        cout << "a is not equal to b" << endl;
    }

    return 0;
}
Editor is loading...
Leave a Comment