Vla_DOS

Untitled

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