Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
7 / 7 / 7
Регистрация: 25.03.2015
Сообщений: 136

Контейнерный класс Array

25.03.2015, 15:05. Показов 1359. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создайте класс Array с двумя полями: указатель на массив целых чисел и размер массива. В классе хранится только указатель на массив, сами данные хранятся в динамической области памяти, выделенной оператором new. Напишите методы:
1. Конструктор, которая принимает 1 параметр (размер массива) и выделяет память под массив.
2. Организуйте ввод/вывод массива:
a. ** Перегрузите операторы << и >> для потокового ввода/вывода массива.
b. *С помощью методов CoutArray и CinArray.
3. Деструктор, который освобождает память из-под массива.
Напишите в функции main код, который продемонстрирует работу методов класса Array на примере массива из 10 элементов.
Вот, что получается:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Array
{
private:
    int *data;
    int size;
public:
    Array(int size)
    {
        int *data = new int[size];
    }
 
    void Array::CinArray()
    {
        for (int i = 0; i < size; i++)
            cout << data[i] << endl;
    }
 
    Array::~Array()
    {
        delete[]data;
    }
 
    void Array::CoutArray()
    {
        for (int i = 0; i < size; i++)
        {
            cout << i << endl;
        }
    }
};
Помогите пожалуйста!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.03.2015, 15:05
Ответы с готовыми решениями:

Контейнерный класс
В общем нужно реализовать контейнерный класс не использую STL библиотеку, я не уверен правильно ли я понял что такое контейнерный...

Контейнерный класс
1)Создать класс“Турагенство”, состоящей из класса ”Тур”. 2)Класс “Турагенство ”:название турагенства , год основания, телефон. 3)Класс...

Свой контейнерный класс
Господа, помогите пожалуйста написать прогу. сама вообще не справляюсь: шаблоны и контейнеры понимаю с пятого на десятое. задание:...

14
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,558
25.03.2015, 15:11
Лучше так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void Array::CinArray(std::istream & in)
{
    for (int i = 0; i < size; i++)
        in >> data[i];
}
 
void Array::CoutArray(std::ostream & out)
{
    for (int i = 0; i < size; i++)
        cout << data[i] << endl;
}
 
std::istream & operator>>(std::istream & in, Array & arr)
{
    arr.CinArray(in);
    return in;
}
 
std::ostream & operator<<(std::ostream & out, Array & arr)
{
    arr.CoutArray(out);
    return out;
}
1
7 / 7 / 7
Регистрация: 25.03.2015
Сообщений: 136
25.03.2015, 15:20  [ТС]
Основная проблема в другом, в пункте 1, конструктор работает неправильно. Не могу понять в чем причина!
0
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,558
25.03.2015, 15:25
Цитата Сообщение от KinGelaim Посмотреть сообщение
конструктор работает неправильно
Уберите int * перед data в конструкторе.
И инициализируйте переменную size.

Добавлено через 3 минуты
И добавь какой-нибудь префикс/суффикс для членов класса, чтобы не было конфлитов с соответствующими медотами и их аргументами.
1
7 / 7 / 7
Регистрация: 25.03.2015
Сообщений: 136
25.03.2015, 15:27  [ТС]
Цитата Сообщение от John Prick Посмотреть сообщение
Уберите int * перед data в конструкторе
Но в задании
Цитата Сообщение от KinGelaim Посмотреть сообщение
выделяет память под массив
0
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,558
25.03.2015, 15:30
KinGelaim, ну да. Только у тебя выделяет память не под массив, который в классе, а под локальный массив в конструкторе.
1
7 / 7 / 7
Регистрация: 25.03.2015
Сообщений: 136
25.03.2015, 15:36  [ТС]
Хорошо, но как мне
Цитата Сообщение от John Prick Посмотреть сообщение
инициализируйте переменную size
, если она у меня вводится в функции main
Цитата Сообщение от KinGelaim Посмотреть сообщение
Array(int size)
0
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,558
25.03.2015, 15:38
C++
1
2
3
4
5
6
7
8
9
10
11
12
class Array
{
private:
    int m_size; // добавим m_ чтобы отличать от других size
    int * m_data;
public:
    Array(int size) : m_size(size) // инициализируем m_size
    {
        m_data = new int[m_size]; // выделяем память под массив
    }
    // во всех функциях класса используем m_data и m_size
};
1
7 / 7 / 7
Регистрация: 25.03.2015
Сообщений: 136
25.03.2015, 16:02  [ТС]
Все отлично работает, кроме 3 пункта
Цитата Сообщение от KinGelaim Посмотреть сообщение
Деструктор, который освобождает память из-под массива
, выдает ошибку. Скорее всего, неправильно в функции main, помогите пожалуйста
0
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,558
25.03.2015, 16:06
KinGelaim, приведи весь изменённый код и функцию main.
1
7 / 7 / 7
Регистрация: 25.03.2015
Сообщений: 136
25.03.2015, 16:12  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Array
{
private:
    int *data;
    int size;
public:
    Array(int size): size(size)
    {
        data = new int[size];
    }
 
    void Array::CinArray()
    {
        for (int i = 0; i < size; i++)
            cin >> data[i];
    }
 
    void Array::CoutArray()
    {
        for (int i = 0; i < size; i++)
            cout << data[i] << endl;
    }
 
    Array::~Array()
    {
        delete[]data;
    }
}
 
int main()
{
    Array array(10);
    array.CinArray();
    array.CoutArray();
    array.~Array();
    return 0;
}
0
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,558
25.03.2015, 16:19
C++
1
array.~Array();
Вызывать деструктор явно не нужно. Он автоматически вызовется при выходе объекта из области видимости (в данном случае, при выходе из функции main).

Добавлено через 57 секунд
После определения класса поставь точку с запятой.
1
7 / 7 / 7
Регистрация: 25.03.2015
Сообщений: 136
25.03.2015, 16:19  [ТС]
Огромное спасибо! Вы очень мне помогли!
Последний вопрос, как тему закрыть?
0
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,558
25.03.2015, 16:20
Зачем? Она сама "утонет".
1
7 / 7 / 7
Регистрация: 25.03.2015
Сообщений: 136
25.03.2015, 16:21  [ТС]
Хорошо, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.03.2015, 16:21
Помогаю со студенческими работами здесь

Контейнерный класс map
Никак не могу понять как написать программу на С++, вот задание: Написать программу моделирования работы автобусного парка. Сведения о...

Контейнерный класс Queue
Создать абстрактный базовый класс с виртуальной функцией - сумма прогрессии. Создать производные классы: арифметическая прогрессия и...

Реализовать контейнерный класс
помоги пожалуйста с задачей за вознаграждение) Задание: Реализовать контейнерный класс в соответствии с вариантом задания(нижняя...

Что такое контейнерный класс?
Если можно примерчик приведите. Спасибо.

Контейнерный класс, с чем есть?
Парни, всем привет! Вот сижу с домашкой... Нужно сделать контейнерный класс для двух классов (книга и библиотека) на основе массива......


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru