Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- class Fraction
- {
- private:
- int nod(int x, int y)
- {
- while (x != y)
- {
- if (x > y)
- {
- int temp = x;
- x = y;
- y = temp;
- }
- y -= x;
- }
- return x;
- }
- int nok(int x, int y)
- {
- return x * y / nod(x, y);
- }
- int shorten(int num, int nodd)
- {
- return num / nodd;
- }
- void null(int denum)
- {
- if (denum == 0) std::cerr << "denum can't be null!" << std::endl;
- }
- public:
- int numerator, denominator;
- Fraction operator+ (Fraction& F)
- {
- null(this->denominator);
- null(F.denominator);
- Fraction result;
- if (this->denominator == F.denominator)
- {
- result.numerator = this->numerator + F.numerator;
- result.denominator = this->denominator;
- }
- else
- {
- int nokk = nok(this->denominator, F.denominator);
- int mul1, mul2;
- mul1= nokk / this->denominator;
- mul2 = nokk / F.denominator;
- result.numerator = this->numerator * mul1 + F.numerator * mul2;
- result.denominator = nokk;
- }
- return result;
- }
- Fraction operator- (Fraction& F)
- {
- null(this->denominator);
- null(F.denominator);
- Fraction result;
- if (this->denominator == F.denominator)
- {
- result.numerator = this->numerator - F.numerator;
- result.denominator = this->denominator;
- }
- else
- {
- int nokk = nok(this->denominator, F.denominator);
- int mul1, mul2;
- mul1 = nokk / this->denominator;
- mul2 = nokk / F.denominator;
- result.numerator = this->numerator * mul1 - F.numerator * mul2;
- result.denominator = nokk;
- }
- int resNod = nod(result.numerator, result.denominator);
- result.numerator /= resNod;
- result.denominator /= resNod;
- return result;
- }
- Fraction operator* (Fraction& F)
- {
- null(this->denominator);
- null(F.denominator);
- Fraction result;
- result.numerator = this->numerator * F.numerator;
- result.denominator = this->denominator * F.denominator;
- int resNod = nod(result.numerator, result.denominator);
- result.numerator /= resNod;
- result.denominator /= resNod;
- return result;
- }
- Fraction operator/ (Fraction& F)
- {
- null(this->denominator);
- null(F.denominator);
- Fraction result;
- result.numerator = this->numerator * F.denominator;
- result.denominator = this->denominator * F.numerator;
- int resNod = nod(result.numerator, result.denominator);
- result.numerator /= resNod;
- result.denominator /= resNod;
- return result;
- }
- void print()
- {
- std::cout << numerator << "/" << denominator << std::endl;
- }
- };
- int main()
- {
- Fraction f1, f2;
- Fraction sum, dif, mul, div;
- f1.numerator = 8;
- f1.denominator = 16;
- f2.numerator = 9;
- f2.denominator = 81;
- sum = f1 + f2;
- dif = f1 - f2;
- mul = f1 * f2;
- div = f1 / f2;
- std::cout << "Results:" << std::endl;
- std::cout << "Sum : ";sum.print();
- std::cout << "Dif : ";dif.print();
- std::cout << "Mul : ";mul.print();
- std::cout << "Div : ";div.print();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement