Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include <ctime>
- #include <exception>
- using namespace std;
- class Array
- {
- private:
- int* a; //наш масив
- int N; //размір
- void set() //ввод рандомних елементів масива
- {
- for (int i = 0; i < N; i++)
- a[i] = rand() % 100;
- }
- public:
- Array() //конструктор без параметрів
- {
- N = 1;
- a = new int[N];
- for (int i = 0; i < N; i++)
- a[i] = 0;
- }
- Array(int n) //конструктор з одним параметром
- {
- if (n > 20000)
- return;
- N = n;
- a = new int[N];
- set();
- }
- Array(const Array& source) //конструктор копіюовання
- {
- N = source.N;
- a = new int[N];
- for (int i = 0; i < N; i++)
- a[i] = source.a[i];
- }
- ~Array() //деструктор
- {
- delete[]a; //вивільнення пам'яті
- }
- int getsize() //повернення розміру масива
- {
- return N;
- }
- void print() //показати наш масив
- {
- for (int i = 0; i < N; i++)
- cout << a[i] << " ";
- cout << endl;
- }
- void sort() //сортування масиву за зростанням
- {
- int temp; //змінні для зберігання мін-ного значення та індексу масиву
- for (int i = 0; i < N; i++)
- {
- temp = a[i]; //ініціалізуємо тимчас. змінну
- for (int j = i; j < N; j++)
- if (temp > a[j])//знаходимо мін. елемент
- {
- temp = a[j]; //робимо перестановку
- a[j] = a[i];
- a[i] = temp;
- }
- }
- }
- int max()
- {
- sort();
- return a[N - 1];
- }
- int min()
- {
- sort();
- return a[0];
- }
- Array& operator=(const Array& source) //перевантажуємо =
- {
- if (this != &source)
- {
- N = source.N;
- a = new int[N];
- for (int i = 0; i < N; i++)
- a[i] = source.a[i];
- }
- return *this;
- }
- bool operator==(const Array source) //перевантажуємо ==
- {
- if (this->N != source.N)
- return false;
- for (int i = 0; i < N; i++) {
- if (this->a[i] != source.a[i]) {
- return false;
- }
- }
- return true;
- }
- bool operator !=(const Array& source) //перевантажуємо !=
- {
- return !(*this == source);
- }
- int operator[](int& k) //перевантажуємо [ ]
- {
- if (k < N)
- return a[k];
- return a[N - 1];
- }
- friend ostream& operator <<(ostream& out, const Array& arr);
- friend istream& operator >>(istream& in, Array& arr);
- };
- ostream& operator <<(ostream& out, const Array& arr) //перевантажуємо <<
- {
- out << "Array(" << arr.N << ")=";
- for (int i = 0; i < arr.N; i++)
- out << arr.a[i] << ' ';
- out << endl;
- return out;
- }
- istream& operator >>(istream& in, Array& arr) //перевантажуємо >>
- {
- for (int i = 0; i < arr.N; i++)
- in >> arr.a[i];
- return in;
- }
- int main()
- {
- srand((unsigned)time(0));
- setlocale(0, "");
- int n;
- cout << "Введите размер 1 массива: ";
- cin >> n; //виклик перевантаженого оператору >>
- cout << '\n';
- Array array(n);
- cout << "Массив 1 (print): " << endl;
- array.print();
- cout << '\n';
- cout << "Массив 1 отсортированный: " << endl;
- array.sort();
- array.print();
- cout << '\n';
- cout << "Max = " << array.max() << " Min = " << array.min() << endl;
- //виклик перевантаженого оператору <<
- cout << '\n';
- Array arr(5); //виклик перевантаженого оператору ( )
- cout << "Введите второй массив (5 чисел):";
- cin >> arr; //виклик перевантаженого оператору >>
- cout << '\n';
- cout << "Массив 2 (ostream): " << endl;
- cout << arr; //виклик перевантаженого оператору <<
- cout << '\n';
- Array arr3;
- arr3 = arr; //ініціалізація елементів масиву, виклик перевантаженого оператору =
- cout << "Массив 3: " << endl;
- cout << arr3; //виклик перевантаженого оператору <<
- cout << '\n';
- Array arr4(5); //виклик перевантаженого оператору ( )
- cout << "Введите четвертый массив (5 чисел):";
- cin >> arr4; //виклик перевантаженого оператору >>
- //виклик перевантаженого оператору == та !=
- if (arr4 == arr) {
- cout << "Четвертый массив равен третьему!" << endl;
- }
- if (arr4 != arr) {
- cout << "Четвертый массив не равен третьему!" << endl;
- }
- cout << '\n';
- Array arr5;
- arr5 = arr; //виклик перевантаженого оператору =
- cout << "Введите номер элемента масива: ";
- cin >> n;
- cout << "arr[" << n << "]= " << arr5[n] << endl; //виклик перевантаженого оператору[]
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment