Advertisement
fehawfdhper02

Untitled

Feb 28th, 2021
960
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.55 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. class Fraction
  4. {
  5. private:
  6.     int nod(int x, int y)
  7.     {
  8.         while (x != y)
  9.         {
  10.             if (x > y)
  11.             {
  12.                 int temp = x;
  13.                 x = y;
  14.                 y = temp;
  15.             }
  16.             y -= x;
  17.         }
  18.         return x;
  19.     }
  20.  
  21.     int nok(int x, int y)
  22.     {
  23.         return x * y / nod(x, y);
  24.     }
  25.  
  26.     int shorten(int num, int nodd)
  27.     {
  28.         return num / nodd;
  29.     }
  30.     void null(int denum)
  31.     {
  32.         if (denum == 0) std::cerr << "denum can't be null!" << std::endl;
  33.     }
  34.  
  35. public:
  36.     int numerator, denominator;
  37.  
  38.     Fraction operator+ (Fraction& F)
  39.     {
  40.         null(this->denominator);
  41.         null(F.denominator);
  42.  
  43.         Fraction result;
  44.         if (this->denominator == F.denominator)
  45.         {
  46.             result.numerator = this->numerator + F.numerator;
  47.             result.denominator = this->denominator;
  48.         }
  49.         else
  50.         {
  51.             int nokk = nok(this->denominator, F.denominator);
  52.             int mul1, mul2;
  53.             mul1= nokk / this->denominator;
  54.             mul2 = nokk / F.denominator;
  55.  
  56.             result.numerator = this->numerator * mul1 + F.numerator * mul2;
  57.             result.denominator = nokk;
  58.         }
  59.  
  60.  
  61.         return result;
  62.     }
  63.  
  64.     Fraction operator- (Fraction& F)
  65.     {
  66.         null(this->denominator);
  67.         null(F.denominator);
  68.  
  69.         Fraction result;
  70.         if (this->denominator == F.denominator)
  71.         {
  72.             result.numerator = this->numerator - F.numerator;
  73.             result.denominator = this->denominator;
  74.         }
  75.         else
  76.         {
  77.             int nokk = nok(this->denominator, F.denominator);
  78.             int mul1, mul2;
  79.             mul1 = nokk / this->denominator;
  80.             mul2 = nokk / F.denominator;
  81.  
  82.             result.numerator = this->numerator * mul1 - F.numerator * mul2;
  83.             result.denominator = nokk;
  84.         }
  85.         int resNod = nod(result.numerator, result.denominator);
  86.         result.numerator /= resNod;
  87.         result.denominator /= resNod;
  88.  
  89.         return result;
  90.     }
  91.  
  92.     Fraction operator* (Fraction& F)
  93.     {
  94.         null(this->denominator);
  95.         null(F.denominator);
  96.  
  97.         Fraction result;
  98.         result.numerator = this->numerator * F.numerator;
  99.         result.denominator = this->denominator * F.denominator;
  100.  
  101.         int resNod = nod(result.numerator, result.denominator);
  102.         result.numerator /= resNod;
  103.         result.denominator /= resNod;
  104.  
  105.         return result;
  106.     }
  107.  
  108.     Fraction operator/ (Fraction& F)
  109.     {
  110.         null(this->denominator);
  111.         null(F.denominator);
  112.  
  113.         Fraction result;
  114.         result.numerator = this->numerator * F.denominator;
  115.         result.denominator = this->denominator * F.numerator;
  116.  
  117.         int resNod = nod(result.numerator, result.denominator);
  118.         result.numerator /= resNod;
  119.         result.denominator /= resNod;
  120.  
  121.         return result;
  122.     }
  123.  
  124.     void print()
  125.     {
  126.         std::cout << numerator << "/" << denominator << std::endl;
  127.     }
  128.  
  129. };
  130.  
  131. int main()
  132. {
  133.    Fraction f1, f2;
  134.    Fraction sum, dif, mul, div;
  135.    f1.numerator = 8;
  136.    f1.denominator = 16;
  137.    f2.numerator = 9;
  138.    f2.denominator = 81;
  139.  
  140.  
  141.     sum = f1 + f2;
  142.     dif = f1 - f2;
  143.     mul = f1 * f2;
  144.     div = f1 / f2;
  145.  
  146.     std::cout << "Results:" << std::endl;
  147.     std::cout << "Sum : ";sum.print();
  148.     std::cout << "Dif : ";dif.print();
  149.     std::cout << "Mul : ";mul.print();
  150.     std::cout << "Div : ";div.print();
  151.    
  152.     return 0;
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement