Vla_DOS

Untitled

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