Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- class Pair {
- protected:
- int a, b;
- public:
- Pair() {
- a = 0;
- b = 0;
- }
- Pair(int a, int b) {
- this->a = a;
- this->b = b;
- }
- Pair(const Pair &P) {
- a = P.a;
- b = P.b;
- }
- virtual void sum(const Pair &P) = 0;
- virtual void sub(const Pair &P) = 0;
- virtual void mul(const Pair &P) = 0;
- virtual double div(const Pair &P) = 0;
- };
- class Money : public Pair {
- public:
- Money() : Pair() {};
- Money(int a, int b) : Pair(a, b) {};
- Money(const Money &M) : Pair(M.a, M.b) {};
- Money(const Pair &P) : Pair(P) {};
- void set_a(int a) {
- this->a = a;
- }
- void set_b(int b) {
- this->b = b;
- }
- int get_a() {
- return a;
- }
- int get_b() {
- return b;
- }
- void splitUp(int n) {
- a = n / 100;
- b = n % 100;
- }
- void sum(const Pair &P) {
- Money M = P;
- splitUp(a * 100 + b + (M.a * 100 + M.b));
- }
- void sub(const Pair &P) {
- Money M = P;
- splitUp(a * 100 + b - (M.a * 100 + M.b));
- }
- void mul(const Pair &P) {
- Money M = P;
- splitUp((a * 100 + b) * (M.a * 100 + M.b));
- }
- double div(const Pair &P) {
- Money M = P;
- return ((a * 100 + b) / (M.a * 100 + M.b));
- }
- Money operator =(const Money &M) {
- if (&M == this)
- return *this;
- return Money(this->a = M.a, this->b = M.b);
- }
- friend std::ostream& operator << (ostream &out, const Money &M);
- virtual void print() {
- cout << "(" << a << ", " << b << ")";
- }
- friend std::ofstream& operator << (ofstream &out, const Money &M);
- friend std::ifstream& operator >> (ifstream &out, const Money &M);
- };
- ostream& operator << (ostream &s, Money &M) {
- s << "(" << M.get_a() << ", " << M.get_b() << ")";
- return s;
- }
- ofstream& operator << (ofstream &fout, Money &M) {
- if (fout.is_open() && fout.good()) {
- fout << "(" << M.get_a() << ", " << M.get_b() << ")";
- }
- return fout;
- }
- ifstream& operator >> (ifstream &fin, Money &M) {
- if (fin.is_open() && fin.good()) {
- int a, b;
- fin >> a >> b;
- M.set_a(a);
- M.set_b(b);
- }
- return fin;
- }
- class Fraction : public Pair {
- public:
- Fraction() : Pair() {};
- Fraction(int a, int b) : Pair(a, b) {};
- Fraction(const Fraction &F) : Pair(F.a, F.b) {};
- Fraction(const Pair &P) : Pair(P) {};
- void set_a(int a) {
- this->a = a;
- }
- void set_b(int b) {
- this->b = b;
- }
- int get_a() {
- return a;
- }
- int get_b() {
- return b;
- }
- void sum(const Pair &P) {
- Fraction F = P;
- a = a * F.b + F.a * b;
- b = b * F.b;
- }
- void sub(const Pair &P) {
- Fraction F = P;
- a = a * F.b - F.a * b;
- b = b * F.b;
- }
- void mul(const Pair &P) {
- Fraction F = P;
- a *= F.a;
- b *= F.b;
- }
- double div(const Pair &P) {
- Fraction F = P;
- a *= F.b;
- b *= F.a;
- return a / b;
- }
- Money operator =(const Fraction &F) {
- if (&F == this)
- return *this;
- return Fraction(this->a = F.a, this->b = F.b);
- }
- friend std::ostream& operator << (ostream &out, const Fraction &F);
- virtual void print() {
- cout << "(" << a << ", " << b << ")";
- }
- friend std::ofstream& operator << (ofstream &out, const Fraction &F);
- friend std::ifstream& operator >> (ifstream &out, const Fraction &F);
- };
- ostream& operator << (ostream &s, Fraction &F) {
- s << F.get_a() << "/" << F.get_b();
- return s;
- }
- ofstream& operator << (ofstream &fout, Fraction &F) {
- if (fout.is_open() && fout.good()) {
- fout << F.get_a() << "/" << F.get_b();
- }
- return fout;
- }
- ifstream& operator >> (ifstream &fin, Fraction &F) {
- if (fin.is_open() && fin.good()) {
- int a, b;
- fin >> a >> b;
- F.set_a(a);
- F.set_b(b);
- }
- return fin;
- }
- void main() {
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement