Advertisement
Xom9ik

Lab_11/8 var (IIl semester)

Dec 10th, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.74 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <ctime>
  4.  
  5. using namespace std;
  6.  
  7. template <typename T>
  8. class Multiplicity
  9. {
  10. public:
  11.     Multiplicity(int s, T k = 0)
  12.     {
  13.         size = s;
  14.         data = new T[size];
  15.         for (int i = 0; i < size; i++)
  16.             data[i] = k;
  17.     }
  18.     //конструктор копирования
  19.     Multiplicity(const Multiplicity<T> &a)
  20.     {
  21.         size = a.size;
  22.         data = new int[size];
  23.         for (int i = 0; i<size; i++)
  24.             data[i] = a.data[i];
  25.     }
  26.     ~Multiplicity()
  27.     {
  28.         delete[]data;
  29.         data = 0;
  30.     }
  31.     int len()
  32.     {
  33.         return size;
  34.     }
  35.     //оператор присваивания
  36.     Multiplicity<T> &operator = (const Multiplicity<T> &a)
  37.     {
  38.         if (this == &a)
  39.             return *this;
  40.         size = a.size;
  41.         if (data != 0)
  42.             delete[]data;
  43.         data = new int[size];
  44.         for (int i = 0; i<size; i++)
  45.             data[i] = a.data[i];
  46.         return *this;
  47.     }
  48.     //операция доступа по индексу
  49.     T &operator[](int index)
  50.     {
  51.         if (index < size)
  52.             return data[index];
  53.         else
  54.             cout << "Ошибка" << endl;
  55.     }
  56.     int &operator() ()
  57.     {
  58.         return size;
  59.     }
  60.     //операция проверки на равенство двух множеств
  61.     bool operator == (Multiplicity<T> tmpMulticipility)
  62.     {
  63.         bool temp = false;
  64.         for (int i = 0; i < size; i++)
  65.             if (data[i] == tmpMulticipility.data[i])
  66.                 temp = true;
  67.             else
  68.                 return false;      
  69.         return temp;
  70.     }
  71.     //операция проверки принадлежности числа множеству
  72.     bool operator > (int value)
  73.     {
  74.         for (int i = 0; i < size; i++)
  75.             if (data[i] == value)
  76.                 return true;
  77.             else if(i==size-1)
  78.                 return false;
  79.     }
  80.     //перегруженные операции ввода-вывода
  81.     template <typename J>
  82.     friend ostream& operator << (ostream& out, Multiplicity<J> &a)
  83.     {
  84.         for (int i = 0; i < a.size; ++i)
  85.             out << a.data[i] << " ";
  86.         return out;
  87.     }
  88.     template <typename J>
  89.     friend istream& operator >> (istream& in, Multiplicity<J> &a)
  90.     {
  91.         for (int i = 0; i< a.size; ++i)
  92.             in >> a.data[i];
  93.         return in;
  94.     }
  95.  
  96. private:
  97.     int size;
  98.     T *data;
  99. };
  100.  
  101. template <class T1, class T2>
  102. class Cash
  103. {
  104. public:
  105.     Cash() {};
  106.     Cash(T1 f, T2 s)
  107.     {
  108.         Money = f;
  109.         Coin = s;
  110.     }
  111.     T1 Money;
  112.     T2 Coin;
  113.     ~Cash() { Money = 0; Coin = 0; };
  114.     //перегруженные операции ввода-вывода
  115.     template <class J1, class J2>
  116.     friend ostream& operator << (ostream& out, Cash<J1, J2> &a)
  117.     {
  118.         out << a.Money << "," << a.Coin;
  119.         return out;
  120.     }
  121.     template <class J1, class J2>
  122.     friend istream& operator >> (istream& in, Cash<J1, J2> &a)
  123.     {
  124.         cout << "Рубли:";
  125.         in >> a.Money;
  126.         cout << "Монеты:";
  127.         in >> a.Coin;
  128.         return in;
  129.     }
  130. };
  131.  
  132. int main()
  133. {
  134.     setlocale(LC_ALL, "rus");
  135.     int size;
  136.     cout << "Введите размерность множества A и B: ";
  137.     cin >> size;
  138.  
  139.     Multiplicity<int> A(size);
  140.     cout << "Введите " << size << " чисел множества A\n";
  141.     cin >> A;
  142.     cout << "Введенный множество A: " << A << endl;
  143.  
  144.     Multiplicity<int> B(size);
  145.     cout << "Введите " << size << " чисел множества B\n";
  146.     cin >> B;
  147.     cout << "---Проверка множеств A и B---" << endl;
  148.     cout << "Результат проверки = " << (A == B) << endl;
  149.     int value;
  150.     cout << "Введите число для приверки принадлежности числа множеству: ";
  151.     cin >> value;
  152.     cout << "Наличие " << value << " в множестве A = " << (A > value) << endl;
  153.     cout << "Наличие " << value << " в множестве B = " << (B > value) << endl;
  154.  
  155.  
  156.     cout << "---Ввод чисел для Cash(int, int)---" << endl;
  157.     Cash<int, int> MyCash;
  158.     cin >> MyCash;
  159.     cout << MyCash;
  160.     cout << endl;
  161.     system("pause");
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement