89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 856
1

Двумерный динамический массив. Ввод размера с клавиатуры

08.07.2016, 14:06. Показов 9566. Ответов 3
Метки нет (Все метки)

Что я делаю не так? Хочу с клавиатуры вводить размерность двумерного динамического массива, вылетает в исключение в VS или выводит что нужно, но потом происходит остановка, ка буд-то не удаляет..
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
int cols(NULL);
    int rows(NULL);
    
    //выделение памяти для двумерного массива
    int **ptrarray = new int*[cols];
    for (int count = 0; count < cols; count++)
        ptrarray[count] = new int[rows];
    cout << "Введите размер столбцов ->" << endl;
    cin >> cols;
    cout << "Введите размер строк ->" << endl;
    cin >> rows;
    for (int count_row = 0; count_row < cols; count_row++)
        for (int count_column = 0; count_column < rows; count_column++)
            ptrarray[count_row][count_column] = rand() % 41 + (-20);
 
    for (int count_row = 0; count_row < cols; count_row++)
    {
        for (int count_column = 0; count_column < rows; count_column++)
            cout << setw(4) << setprecision(2) << ptrarray[count_row][count_column] << "   ";
        cout << endl;
    }
    // удаление двумерного динамического массива
    for (int count = 0; count < cols; count++)
        delete[] ptrarray[count];
        delete[] ptrarray;
Добавлено через 1 минуту
Ой, вроде разобрался =)
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
int cols;
    int rows;
    cout << "Введите размер столбцов ->" << endl;
    cin >> cols;
    cout << "Введите размер строк ->" << endl;
    cin >> rows;
    //выделение памяти для двумерного массива
    int **ptrarray = new int*[cols];
    for (int count = 0; count < cols; count++)
        ptrarray[count] = new int[rows];
    for (int count_row = 0; count_row < cols; count_row++)
        for (int count_column = 0; count_column < rows; count_column++)
            ptrarray[count_row][count_column] = rand() % 41 + (-20);
 
    for (int count_row = 0; count_row < cols; count_row++)
    {
        for (int count_column = 0; count_column < rows; count_column++)
            cout << setw(4) << setprecision(2) << ptrarray[count_row][count_column] << "   ";
        cout << endl;
    }
    // удаление двумерного динамического массива
    for (int count = 0; count < cols; count++)
        delete[] ptrarray[count];
        delete[] ptrarray;
Правильно-ли вообще я делаю? Так заработало.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.07.2016, 14:06
Ответы с готовыми решениями:

Двумерный динамический массив размера NxM
Создайте двумерный динамический массив размера NxM.Выделите для него и освободите память.

Создать двумерный динамический массив заданного пользователем размера
Нужно создать массив (ну пусть М). Вот как объявить этот массив, чтобы пользователь затем сам...

Ввод данных в двумерный динамический массив
Добрый вечер! Осваиваю уже третий день двумерные массивы в С++, но каким образом они создаются...

Динамический ввод и вывод данных в двумерный массив
Не могу реализовать ввод и вывод данных двумерного массива используя указатель на указатель, в чём...

3
62 / 60 / 37
Регистрация: 01.04.2015
Сообщений: 116
08.07.2016, 14:08 2
Сначала необходимо задать размерность массива, а потом уже выделять память.
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
int cols(NULL);
    int rows(NULL);
    
    cout << "Введите размер столбцов ->" << endl;
    cin >> cols;
    cout << "Введите размер строк ->" << endl;
    cin >> rows;
 
    //выделение памяти для двумерного массива
    int **ptrarray = new int*[cols];
    for (int count = 0; count < cols; count++)
        ptrarray[count] = new int[rows];
    for (int count_row = 0; count_row < cols; count_row++)
        for (int count_column = 0; count_column < rows; count_column++)
            ptrarray[count_row][count_column] = rand() % 41 + (-20);
 
    for (int count_row = 0; count_row < cols; count_row++)
    {
        for (int count_column = 0; count_column < rows; count_column++)
            cout << setw(4) << setprecision(2) << ptrarray[count_row][count_column] << "   ";
        cout << endl;
    }
    // удаление двумерного динамического массива
    for (int count = 0; count < cols; count++)
        delete[] ptrarray[count];
        delete[] ptrarray;
2
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 856
08.07.2016, 14:13  [ТС] 3
Когда идет заполнение рандомно, мы заполняем первым for столбцы, а вторым for строки?
0
62 / 60 / 37
Регистрация: 01.04.2015
Сообщений: 116
08.07.2016, 14:40 4
Циклы вложенные, первый цикл перебирает строки, а второй цикл элементы строки (столбцы).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.07.2016, 14:40
Помогаю со студенческими работами здесь

Создать двумерный динамический массив произвольного размера NxN (размер ввести). Заполнить массив случайным об
Создать двумерный динамический массив произвольного размера NxN (размер ввести). Заполнить массив...

Динамический двумерный массив заданного размера начала и конца
Кхм, всем привет, можно ли в дель фи реализовать данную фичу? Т.е сделать динамический массив...

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

Динамический массив. Ввод размерности с клавиатуры
Вечер добрый. Прошу помощи у Вас. Суть просьбы : создать динамический массив(квадрат) с...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru