/
ArtT
/
Netology
Обзор
Документация
Войти
/
ArtT
/
Netology
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Part3/Task_3_2_2/Task_3_2_2.cpp
108 строк
3 KB
ArtT
Исправил задание 3_2_2
21 фев 2026, 07:04
21 фев 2026, 07:04
633bcb1
Код
Авторство
О чём код?
#include <iostream> #include <Windows.h> class IntArray { private: int* ptr; int size{ 0 }; int curInd{ 0 }; public: IntArray(int aSize) : size(aSize), ptr(nullptr) { if (size > 0) { ptr = new int[size]; std::fill(ptr, ptr + size, 0); } } ~IntArray() { delete[] ptr; } int& operator[](int index) { if (index >= size) { throw std::runtime_error("Указанный индекс вне диапазона массива."); } else if (index < 0) { throw std::runtime_error("Индекс элемента массива не может быть отрицательным."); } return ptr[index]; } IntArray& operator=(const IntArray& arr) { if (this != &arr) { // Проверка на самоприсваивание delete[] ptr; // Освободить старую память size = arr.size; if (size > 0) { ptr = new int[size]; std::copy(arr.ptr, arr.ptr + size, ptr); curInd = arr.curInd; } else { ptr = nullptr; curInd = 0; } } return *this; } void add_element(int val) { if (curInd >= size) { throw std::runtime_error("Достигнут конец массива."); } ptr[curInd++] = val; } int& get_element(int index) { if (index >= size) { throw std::runtime_error("Указанный индекс вне диапазона массива."); } else if (index < 0) { throw std::runtime_error("Индекс элемента массива не может быть отрицательным."); } return ptr[index]; } void print() const { for (int i = 0; i < size; i++) std::cout << ptr[i] << " "; std::cout << std::endl; }; int getIndex() { return curInd; } }; int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); try { IntArray arr(5); arr.add_element(1); arr.add_element(4); arr.add_element(155); IntArray new_array(2); new_array.add_element(44); new_array.add_element(34); arr.print(); //std::cout << arr.getIndex() << std::endl; new_array.print(); //std::cout << new_array.getIndex() << std::endl; arr = new_array; arr.print(); //std::cout << arr.getIndex() << std::endl; } catch (const std::exception& ex) { std::cout << ex.what() << std::endl; } return EXIT_SUCCESS; }