Untitled
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