Различия

Показаны различия между двумя версиями страницы.


reshenie_zadachi_10 [2025/07/06 12:39] (текущий) – создано - внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +====== Задача 10. Класс динамического массива. ======
 +**Задача 10:** Создайте класс динамического массива, в котором реализована проверка выхода за границы массива. Перегрузите операторы: [ ], =, +, -,++ (добавление элемента в конец массива), – (удаление элемента из конца массива).
 +<file>
 +/*
 + * File:   classdynamicarray.cpp
 + * Author: darkfire
 + *
 + * Created on December 11, 2010, 7:32 PM
 + */
 +
 +#include <stdlib.h>
 +#include <iostream>
 +
 +/* Создайте класс динамического массива, в котором реализована проверка выхода
 + * за границы массива.
 + * Перегрузите операторы: [ ], =, +, -,
 + * ++ (добавление элемента в конец массива),
 + * -- (удаление элемента из конца массива).
 + */
 +using namespace std;
 +
 +class A{
 + int size;
 + int *a;
 +public:
 + A(int size);//Конструктор. Создание, инициализация массива.
 + A(const A &aA);//Конструктор копирования
 + ~A(){//деструктор
 +            delete [] a;
 + }
 + int Get () const {// метод выводит размер динамического массива
 +            return size;
 + }
 + int &operator[](int j){ //Перегруженный оператор []
 +      return a [j];
 + }
 + A operator--(); //Перегруженный оператор -- префиксной формы. Размер массива уменьшается на единицу
 +  A operator++(); //Перегруженный оператор ++
 + A operator+(const A &);
 + A operator=(const A &);
 +
 +};
 +
 + A::A(int size){//Конструктор. Создание, инициализация массива.
 + this->size=size;
 + a = new int [size];
 + for (int i = 0; i < size; i++)
 +            a [i] = i + 1;
 + }
 + A::A(const A &aA){//Конструктор копирования
 +            size = aA.size;
 +            a = new int [size];
 +            for(int i = 0; i<size; i++)
 +                a[i] = aA.a[i];
 + }
 + A A::operator-- (){ //Перегруженный оператор -- префиксной формы
 +            //размер массива уменьшается на единицу
 +            size-=1;
 +            int *b=new int [size];
 +            for (int i=0;i<size;i++){
 + b[i]=a[i];
 +            }
 +            delete [] a;
 +            a=b;
 +            return *this; //возвращаем объект генерирующий вызов
 + }
 + A A::operator++(){ //Перегруженный оператор ++
 +            //размер массива увеличивается на единицу
 +            size+=1;
 +            int *b=new int [size];
 +            for (int i=0;i<size-1;i++){
 + b[i]=a[i];
 +            }
 +            b[size-1]=size;//заполним новый элемент массива
 +            delete [] a;
 +            a=b;
 +            return *this; //возвращаем объект генерирующий вызов
 + }
 + A A::operator+(const A &aA){
 + size = aA.Get()+this->size;
 + A temp(size);
 + return temp;
 + }
 + A A::operator=(const A &aA){
 +            size = aA.size;
 + //cout<<"aA.size: "<<aA.size<<"\n";
 +            a = new int [size];
 +            for(int i = 0; i<size; i++)
 +                a[i] = aA.a[i];
 + return *this; //возвращаем объект генерирующий вызов
 + }
 +
 +int main() {
 +    int i;
 + A object(12);
 +    cout<<"\nShow:\n";
 + for(i=0;i<object.Get();i++){
 + cout<<object[i]<<" ";
 + }
 + cout<<"\n\n";
 +        --object;
 +        --object;
 +        --object;
 + --object;//удалить один элемент массива
 + cout<<object.Get()<<"\n";
 + for(i=0;i<object.Get();i++){
 + cout<<object[i]<<" ";
 + }
 + cout<<"\n\n";
 +        ++object;
 +        ++object;//добавить один элемент массива
 + cout<<object.Get()<<"\n";
 + for(i=0;i<object.Get();i++){
 + cout<<object[i]<<" ";
 + }
 + cout<<"\n\n";
 + A C(0);
 + A B(5);
 + cout<<"object.Get = "<<object.Get()<<" B.Get = "<<B.Get()<<"\n";
 + C=object+B;
 +
 + for(i=0;i<C.Get();i++){
 + cout<<C[i]<<" ";
 + }
 + cout<<"\n\n";
 +
 +    return (EXIT_SUCCESS);
 +};
 +</file>
  

📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.

📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.

💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!