Advertisement
georgiy110802

Untitled

May 26th, 2021
975
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.73 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. class Fraction {
  6. private:
  7.     vector<unsigned char> wholePart, fractionPart;
  8.     bool sign;
  9. public:
  10.     Fraction() {
  11.         wholePart = {};
  12.         fractionPart = {};
  13.         sign = false;
  14.     }
  15.  
  16.     Fraction(vector<unsigned char> &_w, vector<unsigned char> &_f, unsigned char &_s) {
  17.         reverse(_w.begin(), _w.end());
  18.         wholePart = _w;
  19.         fractionPart = _f;
  20.         if (_s == '-')
  21.             sign = true;
  22.         else {
  23.             sign = false;
  24.         }
  25.     }
  26.  
  27.     friend bool operator==(const Fraction &a, const Fraction &b) {
  28.         return a.fractionPart == b.fractionPart && a.wholePart == b.wholePart && a.sign == b.sign;
  29.     }
  30.  
  31.     friend bool operator!=(const Fraction &a, const Fraction &b) {
  32.         return !(a == b);
  33.     }
  34.  
  35.     friend bool operator<(const Fraction &a, const Fraction &b) {
  36.         if (a.sign && !b.sign) {
  37.             return true;
  38.         }
  39.         if (!a.sign && b.sign) {
  40.             return false;
  41.         }
  42.         if (a.wholePart.size() != b.wholePart.size()) {
  43.             if (a.sign) {
  44.                 return !(a.wholePart.size() < b.wholePart.size());
  45.             } else {
  46.                 return a.wholePart.size() < b.wholePart.size();
  47.             }
  48.         } else if (a.wholePart != b.wholePart) {
  49.             int _size = a.wholePart.size();
  50.             for (int i = _size - 1; i >= 0; --i) {
  51.                 if (a.wholePart[i] != b.wholePart[i]) {
  52.                     if (a.sign) {
  53.                         return !(a.wholePart[i] < b.wholePart[i]);
  54.                     } else {
  55.                         return a.wholePart[i] < b.wholePart[i];
  56.                     }
  57.                 }
  58.             }
  59.         } else {
  60.             for (int i = 0; i < min(a.fractionPart.size(), b.fractionPart.size()); ++i) {
  61.                 if (a.fractionPart[i] != b.fractionPart[i]) {
  62.                     if (a.sign) {
  63.                         return !(a.fractionPart[i] < b.fractionPart[i]);
  64.                     } else {
  65.                         return a.fractionPart[i] < b.fractionPart[i];
  66.                     }
  67.                 }
  68.             }
  69.             if (a.sign) {
  70.                 return !(a.fractionPart.size() < b.fractionPart.size());
  71.             } else {
  72.                 return a.fractionPart.size() < b.fractionPart.size();
  73.             }
  74.         }
  75.     }
  76.  
  77.     friend bool operator>(const Fraction &a, const Fraction &b) {
  78.         return !(a < b);
  79.     }
  80.  
  81.     friend Fraction operator-(const Fraction &a, const Fraction &b) {
  82.  
  83.     }
  84.  
  85.     friend Fraction operator+(const Fraction &a, const Fraction &b) {
  86.  
  87.     }
  88.  
  89.     friend Fraction operator*(const Fraction &a, const Fraction &b) {
  90.  
  91.     }
  92. };
  93.  
  94. int main() {
  95.  
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement