Advertisement
Guest User

Untitled

a guest
Nov 21st, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.14 KB | None | 0 0
  1. #include"stdafx.h"
  2. #include <iostream>
  3. #include <ctime>
  4.  
  5. using namespace std;
  6. template <typename T>
  7. class Multiplicity
  8. {
  9. public:
  10.     Multiplicity(int s, T k = 0)
  11.     {
  12.         size = s;
  13.         data = new T[size];
  14.         for (int i = 0; i<size; i++)
  15.             data[i] = k;
  16.     }
  17.     //конструктор копирования
  18.     Multiplicity(const Multiplicity<T>&a)
  19.     {
  20.         size = a.size;
  21.         data = new int[size];
  22.         for (int i = 0; i<size; i++)
  23.             data[i] = a.data[i];
  24.     }
  25.     ~Multiplicity()
  26.     {
  27.         delete[]data;
  28.         data = 0;
  29.     }
  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 << "Error" << endl;
  55.     }
  56.     //операция для равности множества
  57.     void operator==(const Multiplicity<T> &k)
  58.     {
  59.         for (int i = 0; i < size; i++)
  60.         {
  61.             cout << (data[i] == k.data[i] ? "Yes" : "No") << endl;
  62.         }
  63.     }
  64.     //операция >
  65.     void operator > (int value)
  66.     {
  67.         int index;
  68.         bool flag = false;
  69.         for (int i = 0; i < size; i++)
  70.         {
  71.             if (data[i] == value)
  72.             {
  73.                 flag = true;
  74.                 index = i;
  75.                 break;
  76.             }
  77.         }
  78.         if (flag == true)
  79.             cout << "Множество содержит " << value << endl;
  80.         else
  81.             cout << "Множество не содержит " << value << endl;
  82.     }
  83.  
  84.     //перегруженные операции ввода-вывода
  85.     template <typename J>
  86.     friend ostream& operator<<(ostream& out, Multiplicity<J> &a)
  87.     {
  88.         for (int i = 0; i<a.len(); ++i)
  89.             out << a.data[i] << " ";
  90.         return out;
  91.     }
  92.     template <typename J>
  93.     friend istream& operator >> (istream& in, Multiplicity<J> &a)
  94.     {
  95.         for (int i = 0; i<a.len(); ++i)
  96.             in >> a.data[i];
  97.         return in;
  98.     }
  99. private:
  100.     int size;
  101.     T *data;
  102. };
  103. template <class T1, class T2>
  104. class Pair
  105. {
  106. public:
  107.     Pair() {};
  108.     Pair(T1 f, T2 s)
  109.     {
  110.         first = f;
  111.         second = s;
  112.     }
  113.     T1 first;
  114.     T2 second;
  115.     ~Pair() { first = 0; second = 0; };
  116.     //перегруженные операции ввода-вывода
  117.     template <class J1, class J2>
  118.     friend ostream& operator << (ostream& out, Pair<J1, J2> &a)
  119.     {
  120.         out << a.first << ":" << a.second;
  121.         return out;
  122.     }
  123.     template <class J1, class J2>
  124.     friend istream& operator >> (istream& in, Pair<J1, J2> &a)
  125.     {
  126.         in >> a.first;
  127.         in >> a.second;
  128.         return in;
  129.     }
  130.  
  131. };
  132.  
  133. int main()
  134. {
  135.     setlocale(LC_ALL, "rus");
  136.     srand(time(NULL));
  137.     int size;
  138.     cout << "\nведите размерность множеств A и B: ";
  139.     cin >> size;
  140.  
  141.     Multiplicity<int> A(size);
  142.     cout << "Множество A \n" << A << "\n";
  143.     cout << "Введите " << size << " чисел множества A\n";
  144.     cin >> A;
  145.     cout << "Введенное множество A: " << A << endl;
  146.     int index, value;
  147.     cout << "Введите индекс элемента для замены(0-" << size << "): ";
  148.     cin >> index;
  149.     cout << "Введите новое значение: ";
  150.     cin >> value;
  151.     A[index] = value;
  152.     cout << "Мћножество A после замены: " << A << endl;
  153.  
  154.     Multiplicity<int> B(size);
  155.     cout << "Введите " << size << " чисел множества B\n";
  156.     cin >> B;
  157.     cout << "Введенное множество B: " << B << endl;
  158.     cout << "Множество A после вычитания из него B: " << A << endl;
  159.     cout << A << "\n=\n" << B << "\n-----------------" << endl;
  160.     cout << "Проверка на равенство" << endl;
  161.     A == B;
  162.     cout << "Число - принадлежность числа множеству" << endl;
  163.     cout << "Введите число для проверки: ";
  164.     cin >> value;
  165.     A > value;
  166.  
  167.     cout << "\n->Ввод данных для Pair(int, double): ";
  168.     Pair<int, double> MyPair;
  169.     cin >> MyPair;
  170.     cout << MyPair;
  171.     cout << endl;
  172.     system("pause");
  173. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement