Advertisement
Kentoo

S#2

May 30th, 2018
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.57 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. class Pair {
  7. protected:
  8.     int a, b;
  9. public:
  10.     Pair() {
  11.         a = 0;
  12.         b = 0;
  13.     }
  14.     Pair(int a, int b) {
  15.         this->a = a;
  16.         this->b = b;
  17.     }
  18.     Pair(const Pair &P) {
  19.         a = P.a;
  20.         b = P.b;
  21.     }
  22.     virtual void sum(const Pair &P) = 0;
  23.     virtual void sub(const Pair &P) = 0;
  24.     virtual void mul(const Pair &P) = 0;
  25.     virtual double div(const Pair &P) = 0;
  26. };
  27.  
  28. class Money : public Pair {
  29. public:
  30.     Money() : Pair() {};
  31.     Money(int a, int b) : Pair(a, b) {};
  32.     Money(const Money &M) : Pair(M.a, M.b) {};
  33.     Money(const Pair &P) : Pair(P) {};
  34.     void set_a(int a) {
  35.         this->a = a;
  36.     }
  37.     void set_b(int b) {
  38.         this->b = b;
  39.     }
  40.     int get_a() {
  41.         return a;
  42.     }
  43.     int get_b() {
  44.         return b;
  45.     }
  46.     void splitUp(int n) {
  47.         a = n / 100;
  48.         b = n % 100;
  49.     }
  50.     void sum(const Pair &P) {
  51.         Money M = P;
  52.         splitUp(a * 100 + b + (M.a * 100 + M.b));
  53.     }
  54.     void sub(const Pair &P) {
  55.         Money M = P;
  56.         splitUp(a * 100 + b - (M.a * 100 + M.b));
  57.     }
  58.     void mul(const Pair &P) {
  59.         Money M = P;
  60.         splitUp((a * 100 + b) * (M.a * 100 + M.b));
  61.     }
  62.     double div(const Pair &P) {
  63.         Money M = P;
  64.         return ((a * 100 + b) / (M.a * 100 + M.b));
  65.     }
  66.     Money operator =(const Money &M) {
  67.         if (&M == this)
  68.             return *this;
  69.         return Money(this->a = M.a, this->b = M.b);
  70.     }
  71.     friend std::ostream& operator << (ostream &out, const Money &M);
  72.     virtual void print() {
  73.         cout << "(" << a << ", " << b << ")";
  74.     }
  75.     friend std::ofstream& operator << (ofstream &out, const Money &M);
  76.     friend std::ifstream& operator >> (ifstream &out, const Money &M);
  77. };
  78. ostream& operator << (ostream &s, Money &M) {
  79.     s << "(" << M.get_a() << ", " << M.get_b() << ")";
  80.     return s;
  81. }
  82. ofstream& operator << (ofstream &fout, Money &M) {
  83.     if (fout.is_open() && fout.good()) {
  84.         fout << "(" << M.get_a() << ", " << M.get_b() << ")";
  85.     }
  86.     return fout;
  87. }
  88. ifstream& operator >> (ifstream &fin, Money &M) {
  89.     if (fin.is_open() && fin.good()) {
  90.         int a, b;
  91.         fin >> a >> b;
  92.         M.set_a(a);
  93.         M.set_b(b);
  94.     }
  95.     return fin;
  96. }
  97.  
  98. class Fraction : public Pair {
  99. public:
  100.     Fraction() : Pair() {};
  101.     Fraction(int a, int b) : Pair(a, b) {};
  102.     Fraction(const Fraction &F) : Pair(F.a, F.b) {};
  103.     Fraction(const Pair &P) : Pair(P) {};
  104.     void set_a(int a) {
  105.         this->a = a;
  106.     }
  107.     void set_b(int b) {
  108.         this->b = b;
  109.     }
  110.     int get_a() {
  111.         return a;
  112.     }
  113.     int get_b() {
  114.         return b;
  115.     }
  116.     void sum(const Pair &P) {
  117.         Fraction F = P;
  118.         a = a * F.b + F.a * b;
  119.         b = b * F.b;
  120.     }
  121.     void sub(const Pair &P) {
  122.         Fraction F = P;
  123.         a = a * F.b - F.a * b;
  124.         b = b * F.b;
  125.     }
  126.     void mul(const Pair &P) {
  127.         Fraction F = P;
  128.         a *= F.a;
  129.         b *= F.b;
  130.     }
  131.     double div(const Pair &P) {
  132.         Fraction F = P;
  133.         a *= F.b;
  134.         b *= F.a;
  135.         return a / b;
  136.     }
  137.     Money operator =(const Fraction &F) {
  138.         if (&F == this)
  139.             return *this;
  140.         return Fraction(this->a = F.a, this->b = F.b);
  141.     }
  142.     friend std::ostream& operator << (ostream &out, const Fraction &F);
  143.     virtual void print() {
  144.         cout << "(" << a << ", " << b << ")";
  145.     }
  146.     friend std::ofstream& operator << (ofstream &out, const Fraction &F);
  147.     friend std::ifstream& operator >> (ifstream &out, const Fraction &F);
  148. };
  149. ostream& operator << (ostream &s, Fraction &F) {
  150.     s << F.get_a() << "/" << F.get_b();
  151.     return s;
  152. }
  153. ofstream& operator << (ofstream &fout, Fraction &F) {
  154.     if (fout.is_open() && fout.good()) {
  155.         fout << F.get_a() << "/" << F.get_b();
  156.     }
  157.     return fout;
  158. }
  159. ifstream& operator >> (ifstream &fin, Fraction &F) {
  160.     if (fin.is_open() && fin.good()) {
  161.         int a, b;
  162.         fin >> a >> b;
  163.         F.set_a(a);
  164.         F.set_b(b);
  165.     }
  166.     return fin;
  167. }
  168. void main() {
  169.     system("pause");
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement