Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Jman
 Аватар для Jman
30 / 30 / 4
Регистрация: 11.10.2015
Сообщений: 290
Завершенные тесты: 1
08.07.2016, 14:06     Двумерный динамический массив. Ввод размера с клавиатуры #1
Что я делаю не так? Хочу с клавиатуры вводить размерность двумерного динамического массива, вылетает в исключение в 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;
Правильно-ли вообще я делаю? Так заработало.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2016, 14:06     Двумерный динамический массив. Ввод размера с клавиатуры
Посмотрите здесь:

Двумерный динамический массив C++
C++ Двумерный динамический массив
Динамический массив произвольного размера C++
Двумерный динамический массив размера NxM C++
Массивы (ввод размера с клавиатуры) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
_Scorpius_
46 / 46 / 23
Регистрация: 01.04.2015
Сообщений: 102
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;
Jman
 Аватар для Jman
30 / 30 / 4
Регистрация: 11.10.2015
Сообщений: 290
Завершенные тесты: 1
08.07.2016, 14:13  [ТС]     Двумерный динамический массив. Ввод размера с клавиатуры #3
Когда идет заполнение рандомно, мы заполняем первым for столбцы, а вторым for строки?
_Scorpius_
46 / 46 / 23
Регистрация: 01.04.2015
Сообщений: 102
08.07.2016, 14:40     Двумерный динамический массив. Ввод размера с клавиатуры #4
Циклы вложенные, первый цикл перебирает строки, а второй цикл элементы строки (столбцы).
Yandex
Объявления
08.07.2016, 14:40     Двумерный динамический массив. Ввод размера с клавиатуры
Ответ Создать тему
Опции темы

Текущее время: 21:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru