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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.74
G-Cat
16 / 16 / 1
Регистрация: 15.03.2009
Сообщений: 94
#1

Двумерный динамический массив - найти ошибку в коде - C++

17.05.2009, 15:46. Просмотров 3747. Ответов 12
Метки нет (Все метки)

пишу код:
C++
1
2
3
4
5
int **array;
cout << "Size: ";
int n;
cin >> n;
array = new int [n][n];
понимаю что в синтаксисе ошибка, но сам разобраться не могу. Помогите пожалуйста.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2009, 15:46     Двумерный динамический массив - найти ошибку в коде
Посмотрите здесь:

Найти причины возникновения ошибок в коде и исправить эти ошибки (динамический двумерный массив) C++
C++ Создать двумерный динамический массив, найти максимальный элемент и его индексы
Динамический двумерный массив: найти наибольший из нименьших элементов строк C++
Двумерный массив - найти ошибку в коде C++
Двумерный массив (найти ошибку в коде) C++
Динамический массив (найти ошибку) C++
Двумерный динамический массив - найти ошибку в коде C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
17.05.2009, 15:54     Двумерный динамический массив - найти ошибку в коде #2
C++
1
2
3
int **array;
array = int*[m]; // m - кол-во строк
for (int i=0; i<m; i++) array[i] = new int[n]; // n - кол-во столбцов
G-Cat
16 / 16 / 1
Регистрация: 15.03.2009
Сообщений: 94
17.05.2009, 16:45  [ТС]     Двумерный динамический массив - найти ошибку в коде #3
компилятор ругается:
C++
1
2
3
4
5
6
7
int **array;
    cout << "Size: ";
    int n;  cin >> n;
    int m;  cin >> m;
    array = int*[n];
    for (int i=0; i<n; i++)
        array[i] = new int [m];
ISergey
Maniac
Эксперт С++
1347 / 880 / 52
Регистрация: 02.01.2009
Сообщений: 2,645
Записей в блоге: 1
17.05.2009, 16:52     Двумерный динамический массив - найти ошибку в коде #4
Код
 array = [COLOR="Red"]new[/COLOR] int*[n];
Ivannumberone
4 / 4 / 0
Регистрация: 17.05.2009
Сообщений: 27
17.05.2009, 18:46     Двумерный динамический массив - найти ошибку в коде #5
Монте кристо вот так лучше!
int (*X)[80] - массив
X= new int [80][80];

Добавлено через 1 минуту 47 секунд
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
C++
1
2
3
int **array;
array = int*[m]; // m - кол-во строк
for (int i=0; i<m; i++) array[i] = new int[n]; // n - кол-во столбцов
Монте кристо вот так лучше!
int (*X)[80] - массив
X= new int [80][80];
ISergey
Maniac
Эксперт С++
1347 / 880 / 52
Регистрация: 02.01.2009
Сообщений: 2,645
Записей в блоге: 1
17.05.2009, 18:52     Двумерный динамический массив - найти ошибку в коде #6
Цитата Сообщение от Ivannumberone Посмотреть сообщение
C++
1
2
int (*X)[80] - массив
X= new int [80][80];
и как эти мансы потом удалить??
И вообще это както странно выглядит.
Ivannumberone
4 / 4 / 0
Регистрация: 17.05.2009
Сообщений: 27
17.05.2009, 18:57     Двумерный динамический массив - найти ошибку в коде #7
Нас так у чили! Да и в книгах так пишут, а удолять просто X

Добавлено через 34 секунды
Цитата Сообщение от ISergey Посмотреть сообщение
и как эти мансы потом удалить??
И вообще это както странно выглядит.
А что тут страного???
Мегатрон
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 355
20.05.2009, 12:01     Двумерный динамический массив - найти ошибку в коде #8
Цитата Сообщение от G-Cat Посмотреть сообщение
компилятор ругается:

Код C++1234567int **array;****cout << "Size: ";****int n;****cin >> n;****int m;****cin >> m;****array = int*[n];****for (int i=0; i<n; i++)********array[i] = new int [m];
а как патом в конце работы с массивом освободить память
C++
1
delete **array;
или как то по другому?
а то у меня в книге вабще нет динамич многомерных массивов

Добавлено через 4 минуты 47 секунд
C++
1
int **array;cout << "Size: ";int n;****cin >> n;int m;****cin >> m;array = int*[n];for (int i=0; i<n; i++)array[i] = new int [m];
C++
1
delete **array;
освободить память или нетак это пишется?
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
20.05.2009, 12:07     Двумерный динамический массив - найти ошибку в коде #9
Цитата Сообщение от Мегатрон Посмотреть сообщение
delete **array;
удалять вот так:

C++
1
2
for (int i=0; i<n; i++) delete[] a[i];
delete[] a;
Мегатрон
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 355
20.05.2009, 12:54     Двумерный динамический массив - найти ошибку в коде #10
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
удалять вот так:


Код C++12for (int i=0; i<n; i++) delete[] a[i];delete[] a;
C++
1
int **array;        cout << "Size: ";        int n;  cin >> n;        int m;  cin >> m;        array = new int*[n];        for (int i=0; i<n; i++)                array[i] = new int [m];    for ( int i = 0; i < n; i++)         for( int j = 0; j < m; j++)               cin >> array [i] [j];     for (int i = 0; i < n; i++)               for (int j = 0; j < m; j++)                         cout << array [i] [j] << endl;       delete [] array [i];
так чтолия шас у себя просто
C++
1
delete []
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
20.05.2009, 13:15     Двумерный динамический массив - найти ошибку в коде #11
Сообщение было отмечено автором темы, экспертом или модератором как ответ
короче.. оператор delete[] удаляет массив... ты же создаешь несколько массивов, поэтому и удалять необходимо несколько.

C++
1
2
3
4
5
6
7
8
int **array;
array = new int*[m]; // создается массив указателей размером m
for (int i=0; i<m; i++) array[i] = new int[n]; // каждая ячейка массива укателей, указывает в свою очередь на массив целочисленный размером n
 
 
// поэтому и удялять надо так
for (int i=0; i<m; i++) delete[] array[i]; // удаляем все целочисленные массивы
delete[] array; // удаляем массив указателей
Мегатрон
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 355
20.05.2009, 13:56     Двумерный динамический массив - найти ошибку в коде #12
C++
1
2
3
4
 
for (int i=0; i<m; i++) 
delete[] array[i];
delete[] array;
понятно значит двойное удалени

а если просто
C++
1
2
 
delete[] array;
то он нече не удалит
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2009, 14:02     Двумерный динамический массив - найти ошибку в коде
Еще ссылки по теме:

Двумерный динамический массив - найти ошибку в коде C++
C++ Динамический массив - найти ошибку в коде
C++ Двумерный динамический массив - найти ошибку в коде
C++ Динамический список строк. Найти ошибку в коде
C++ Объявить и заполнить двумерный динамический массив случайными числами от 10 до 50 - исправить ошибки в коде

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

Или воспользуйтесь поиском по форуму:
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
20.05.2009, 14:02     Двумерный динамический массив - найти ошибку в коде #13
удалит... массив указателей... а динамические целочисленные массивы будут в памяти где-то валятся
Yandex
Объявления
20.05.2009, 14:02     Двумерный динамический массив - найти ошибку в коде
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru