Advertisement
Guest User

Untitled

a guest
Apr 6th, 2020
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.47 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int NOD(int a, int b) {
  6.     if (a < b) {
  7.         swap(a, b);
  8.     }
  9.     while (a % b != 0) {
  10.         a = a % b;
  11.         swap(a, b);
  12.     }
  13.     return b;
  14. }
  15.  
  16. class Rational {
  17. public:
  18.     Rational(){
  19.         p = 0;
  20.         q = 1;
  21.     }
  22.     Rational(int numerator, int denominator):p(numerator), q(denominator){
  23.         if ((p < 0 && q < 0) || q < 0) {
  24.             p *= -1;
  25.             q *= -1;
  26.         }
  27.         if (p == 0) {
  28.             q = 1;
  29.         }
  30.         else {
  31.             int t = NOD(p, q);
  32.             if (t != 1) {
  33.                 p /= t;
  34.                 q /= t;
  35.             }
  36.         }
  37.     }
  38.  
  39.     int Numerator() const {
  40.         return p;
  41.     }
  42.     int Denominator() const {
  43.         return q;
  44.     }
  45.    
  46. private:
  47.     int p;
  48.     int q;
  49. };
  50. /*
  51. bool operator==(const Rational& b, const Rational& a) {
  52.     return (a.Denominator() == b.Denominator() && a.Numerator() == b.Numerator());
  53. }
  54.  
  55. Rational operator+(const Rational& b, const Rational& a) {
  56.     int t = a.Denominator() * b.Denominator();
  57.     int q = t;
  58.     int p = t / a.Denominator() * a.Numerator() + t / b.Denominator() * b.Numerator();
  59.     Rational R(p, q);
  60.     return R;
  61. }
  62.  
  63.  
  64. Rational operator-(const  Rational& a, const Rational& b) {
  65.     int t = a.Denominator() * b.Denominator();
  66.     int q = t;
  67.     int p = t / a.Denominator() * a.Numerator() - t / b.Denominator() * b.Numerator();
  68.     Rational R(p, q);
  69.     return R;
  70. }
  71. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement