mostlabs

2.4/1

Dec 24th, 2020 (edited)
291
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.70 KB | None | 0 0
  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4. /*Разработать шаблонный класс MultiSet – множество с дубликатами.
  5. Класс должен содержать конструктор по умолчанию, основной конструктор и конструктор
  6. копирования.
  7. Перегрузить в этом классе операторные функции, которые обеспечивают ввод/вывод элементов
  8. класса (>>, <<), ,
  9. а также операторную функцию присваивания. Кроме этого перегрузить операторные функции + и
  10. +=,
  11. которые вычисляют объединение двух множеств. Создать с помощью этого класса множество
  12. целых чисел.*/
  13. template <typename T>
  14. class deneme {
  15.     T* data;
  16.     int index;
  17. public:
  18.     deneme<T>() : index(0) {
  19.         data = new T[100];
  20.     };
  21.     deneme<T>(int length)
  22.     {
  23.         data = new T[length];
  24.         index = length;
  25.     }
  26.     ~deneme()
  27.     {
  28.         delete[] data;
  29.     }
  30.     void ekle(T y)
  31.     {
  32.         this->data[this->index] = y;
  33.         this->index++;
  34.         //data[index++] = y;
  35.     }
  36.     bool set(T t) {
  37.         if (t < index)
  38.             return true;
  39.         else
  40.             return false;
  41.     }
  42.     const T* getData()const { return data; }
  43.     int getİdex() { return index; }
  44.     void setİndex(int index) {
  45.         this->index = index;
  46.     }
  47.     deneme<T>(const deneme<T>& c) {
  48.         index = c.index;
  49.         data = new T[index];
  50.         for (int i = 0; i < index; i++) {
  51.             data[i] = c.data[i];
  52.         }
  53.     }
  54.  
  55.  
  56.     deneme operator+(const T x) {
  57.         deneme<T> temp;
  58.         for (int i = 0; i < index; i++) {
  59.             temp.ekle(data[i] + x);
  60.         }
  61.         return temp;
  62.     }
  63.     deneme operator+(const deneme<T>& a) {
  64.         deneme<T> temp;
  65.         for (int i = 0; i < index; i++) {
  66.             temp.ekle(data[i] + a.data[i]);
  67.         }
  68.         return temp;
  69.     }
  70.     deneme<T>& operator=(deneme<T>& b) {
  71.         delete[] data;
  72.         index = b.index;
  73.         data = new T[index];
  74.         for (int i = 0; i < index; i++) {
  75.             data[i] = b.data[i];
  76.         }
  77.         return *this;
  78.     };
  79.     template <typename T> friend void operator+=(deneme<T>& a, const deneme<T>& b);
  80.     template <typename T> friend ostream& operator << (ostream& os, const deneme<T>& obj1);
  81.  
  82.     T& operator[](const int boy) {
  83.         return data[boy];
  84.     }
  85.  
  86.     void print() {
  87.         for (int i = 0; i < index; i++) {
  88.             cout << data[i] << " ";
  89.         }
  90.         cout << endl;
  91.     }
  92. };
  93. template <typename T>
  94. bool operator == (const deneme<T>& d1, const deneme<T>& d2) {
  95.     if (d1.index == d2.index)
  96.     {
  97.         return true;
  98.     }
  99.     else
  100.     {
  101.         return false;
  102.     }
  103.  
  104. }
  105. template <typename T>
  106.  
  107. void operator+=(deneme<T>& a, const deneme<T>& b) {
  108.     int c = a.index + b.index;
  109.     T* temp = new T[c];
  110.     for (int i = 0, j = 0; i < c; i++) {
  111.         if (i >= b.index)
  112.         {
  113.             temp[i] = b.data[j];
  114.             j++;
  115.         }
  116.         else
  117.         {
  118.             temp[i] = a.data[i];
  119.         }
  120.     }
  121.  
  122.  
  123.     a.data = temp;
  124.     a.index = c;
  125.     //delete[] a.data;
  126.     //temp = a.data;
  127.     //return a;
  128. }
  129. template <typename T>
  130. ostream& operator << (ostream& os, const deneme<T>& obj1) {
  131.     for (int i = 0; i < obj1.index; i++)
  132.     {
  133.         os << obj1.data[i] << ' ';
  134.     }
  135.     return os;
  136. }
  137. template <typename T>
  138. istream& operator >> (istream& ob, deneme<T>& obj2) {
  139.     for (int i = 0; i < obj2.index; i++)
  140.     {
  141.         ob >> obj2.data[i];
  142.     }
  143.     return ob;
  144. }
  145. int main() {
  146.     int x;
  147.     cout << "x:";
  148.     cin >> x;
  149.     deneme<int> v1, v2;
  150.     v1.ekle(3);
  151.     v1.ekle(2);
  152.     v1.ekle(10);
  153.     cout << "v1-    \t " << v1 << endl;
  154.     v2.ekle(55);
  155.     v2.ekle(8);
  156.     v2.ekle(9);
  157.     cout << "v2-    \t" << v2 << endl;
  158.     deneme<int>v3 = v1;
  159.     cout << "v3- \t" << v3 << endl;
  160.     cout << "v3 + v2- " << v3 + v2 << endl;
  161.     v3 += v2;
  162.     cout << "v3 += v2- " << v3 << endl;
  163.    
  164.     cout << "v2 + " << x << " - " << v2 + x;
  165.     return 0;
  166. }
  167.  
Add Comment
Please, Sign In to add comment