Vla_DOS

Untitled

Jun 22nd, 2022
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.17 KB | None | 0 0
  1. #include<iostream>
  2. #include <ctime>
  3. #include <exception>
  4. using namespace std;
  5.  
  6. class Array
  7. {
  8. private:
  9.     int* a; //наш масив
  10.     int N; //размір
  11.     void set() //ввод рандомних елементів масива
  12.     {
  13.         for (int i = 0; i < N; i++)
  14.             a[i] = rand() % 100;
  15.     }
  16. public:
  17.     Array() //конструктор без параметрів
  18.     {
  19.         N = 1;
  20.         a = new int[N];
  21.         for (int i = 0; i < N; i++)
  22.             a[i] = 0;
  23.     }
  24.     Array(int n) //конструктор з одним параметром
  25.     {
  26.         if (n < 0)
  27.             throw exception("Invalid n");
  28.  
  29.         if (n > 20000)
  30.             return;
  31.         N = n;
  32.         a = new int[N];
  33.         set();
  34.     }
  35.     Array(const Array& source) //конструктор копіюовання
  36.     {
  37.         N = source.N;
  38.         a = new int[N];
  39.         for (int i = 0; i < N; i++)
  40.             a[i] = source.a[i];
  41.     }
  42.     ~Array() //деструктор
  43.     {
  44.         delete[]a; //вивільнення пам'яті
  45.     }
  46.     int getsize() //повернення розміру масива
  47.     {
  48.         return N;
  49.     }
  50.     void print() //показати наш масив
  51.     {
  52.         for (int i = 0; i < N; i++)
  53.             cout << a[i] << " ";
  54.         cout << endl;
  55.     }
  56.     void sort() //сортування масиву за зростанням
  57.     {
  58.         int temp; //змінні для зберігання мін-ного значення та індексу масиву
  59.         for (int i = 0; i < N; i++)
  60.         {
  61.             temp = a[i]; //ініціалізуємо тимчас. змінну
  62.             for (int j = i; j < N; j++)
  63.                 if (temp > a[j])//знаходимо мін. елемент
  64.                 {
  65.                     temp = a[j]; //робимо перестановку
  66.                     a[j] = a[i];
  67.                     a[i] = temp;
  68.                 }
  69.         }
  70.     }
  71.     int max()
  72.     {
  73.         sort();
  74.         return a[N - 1];
  75.     }
  76.     int min()
  77.     {
  78.         sort();
  79.         return a[0];
  80.     }
  81.     Array& operator=(const Array& source) //перевантажуємо =
  82.     {
  83.         if (this != &source)
  84.         {
  85.             N = source.N;
  86.             a = new int[N];
  87.             for (int i = 0; i < N; i++)
  88.                 a[i] = source.a[i];
  89.         }
  90.         return *this;
  91.     }
  92.     bool operator==(const Array source) //перевантажуємо ==
  93.     {
  94.         if (this->N != source.N)
  95.             return false;
  96.         for (int i = 0; i < N; i++) {
  97.             if (this->a[i] != source.a[i]) {
  98.                 return false;
  99.             }
  100.         }
  101.         return true;
  102.     }
  103.     bool operator !=(const Array& source) //перевантажуємо !=
  104.     {
  105.         return !(*this == source);
  106.     }
  107.     int operator[](int& k) //перевантажуємо [ ]
  108.     {
  109.         if (k < 0 || k >= N)
  110.             throw exception("Invalid k");
  111.  
  112.         return a[k];
  113.     }
  114.     friend ostream& operator <<(ostream& out, const Array& arr);
  115.     friend istream& operator >>(istream& in, Array& arr);
  116. };
  117. ostream& operator <<(ostream& out, const Array& arr) //перевантажуємо <<
  118. {
  119.     out << "Array(" << arr.N << ")=";
  120.     for (int i = 0; i < arr.N; i++)
  121.         out << arr.a[i] << ' ';
  122.     out << endl;
  123.     return out;
  124. }
  125. istream& operator >>(istream& in, Array& arr) //перевантажуємо >>
  126. {
  127.     for (int i = 0; i < arr.N; i++)
  128.         in >> arr.a[i];
  129.     return in;
  130. }
  131. int main()
  132. {
  133.     srand((unsigned)time(0));
  134.     setlocale(0, "");
  135.  
  136.     int n;
  137.  
  138.     try
  139.     {
  140.  
  141.         cout << "Введите размер 1 массива: ";
  142.         cin >> n; //виклик перевантаженого оператору >>
  143.         cout << '\n';
  144.         Array array(n);
  145.         cout << "Массив 1 (print): " << endl;
  146.         array.print();
  147.         cout << '\n';
  148.         cout << "Массив 1 отсортированный: " << endl;
  149.         array.sort();
  150.         array.print();
  151.         cout << '\n';
  152.         cout << "Max = " << array.max() << " Min = " << array.min() << endl;
  153.         //виклик перевантаженого оператору <<
  154.         cout << '\n';
  155.     }
  156.     catch (const std::exception& e)
  157.     {
  158.         cout << e.what() << '\n';
  159.     }
  160.  
  161.     Array arr(5); //виклик перевантаженого оператору ( )
  162.     cout << "Введите второй массив (5 чисел):";
  163.     cin >> arr; //виклик перевантаженого оператору >>
  164.     cout << '\n';
  165.     cout << "Массив 2 (ostream): " << endl;
  166.     cout << arr; //виклик перевантаженого оператору <<
  167.     cout << '\n';
  168.     Array arr3;
  169.     arr3 = arr; //ініціалізація елементів масиву, виклик перевантаженого оператору =
  170.     cout << "Массив 3: " << endl;
  171.     cout << arr3; //виклик перевантаженого оператору <<
  172.     cout << '\n';
  173.     Array arr4(5); //виклик перевантаженого оператору ( )
  174.     cout << "Введите четвертый массив (5 чисел):";
  175.     cin >> arr4; //виклик перевантаженого оператору >>
  176.     //виклик перевантаженого оператору == та !=
  177.     if (arr4 == arr) {
  178.         cout << "Четвертый массив равен третьему!" << endl;
  179.     }
  180.     if (arr4 != arr) {
  181.         cout << "Четвертый массив не равен третьему!" << endl;
  182.     }
  183.     cout << '\n';
  184.     Array arr5;
  185.     arr5 = arr; //виклик перевантаженого оператору =
  186.     cout << "Введите номер элемента масива: ";
  187.     cin >> n;
  188.     cout << "arr[" << n << "]= " << arr5[n] << endl; //виклик перевантаженого оператору[]
  189.  
  190.     system("pause");
  191.     return 0;
  192. }
  193.  
Advertisement
Add Comment
Please, Sign In to add comment