16 / 16 / 1
Регистрация: 15.03.2009
Сообщений: 94
1

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

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

Author24 — интернет-сервис помощи студентам
пишу код:
C++
1
2
3
4
5
int **array;
cout << "Size: ";
int n;
cin >> n;
array = new int [n][n];
понимаю что в синтаксисе ошибка, но сам разобраться не могу. Помогите пожалуйста.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2009, 15:46
Ответы с готовыми решениями:

Двумерный динамический массив - найти ошибку в коде
Кто мне может объяснить почему не работает вариант, когда мы выносим весь процесс выделения памяти...

Двумерный динамический массив - найти ошибку в коде
Где ошибка? using namespace std; void VivodMass(int** &amp;M, int n) { for (int i = 0; i&lt;n;...

Двумерный динамический массив - найти ошибку в коде
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; class Matrix { private: int...

Динамический массив - найти ошибку в коде
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;time.h&quot; #include &lt;iomanip&gt; using...

12
2816 / 1407 / 107
Регистрация: 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 - кол-во столбцов
1
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];
0
Maniac
Эксперт С++
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
17.05.2009, 16:52 4
Код
 array = [COLOR="Red"]new[/COLOR] int*[n];
1
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];
0
Maniac
Эксперт С++
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
17.05.2009, 18:52 6
Цитата Сообщение от Ivannumberone Посмотреть сообщение
C++
1
2
int (*X)[80] - массив
X= new int [80][80];
и как эти мансы потом удалить??
И вообще это както странно выглядит.
0
4 / 4 / 0
Регистрация: 17.05.2009
Сообщений: 27
17.05.2009, 18:57 7
Нас так у чили! Да и в книгах так пишут, а удолять просто X

Добавлено через 34 секунды
Цитата Сообщение от ISergey Посмотреть сообщение
и как эти мансы потом удалить??
И вообще это както странно выглядит.
А что тут страного???
0
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 348
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;
освободить память или нетак это пишется?
0
2816 / 1407 / 107
Регистрация: 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;
0
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 348
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 []
0
2816 / 1407 / 107
Регистрация: 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; // удаляем массив указателей
1
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 348
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;
то он нече не удалит
0
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
20.05.2009, 14:02 13
удалит... массив указателей... а динамические целочисленные массивы будут в памяти где-то валятся
0
20.05.2009, 14:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2009, 14:02
Помогаю со студенческими работами здесь

Двумерный массив - найти ошибку в коде
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main(){ const int...

Двумерный массив (найти ошибку в коде)
всё просто заполнил в ручную один массив, а потом всё перепечаталось во второй массив. Я по...

Найти причины возникновения ошибок в коде и исправить эти ошибки (динамический двумерный массив)
Подскажите пожалуйста,что я упустила, где шибка? #include &lt;iostream&gt; using namespace std; ...

Объявить и заполнить двумерный динамический массив случайными числами от 10 до 50 - исправить ошибки в коде
Здравствуйте есть задача 3:http://http://purecodecpp.com/archives/1284 #include&lt;iostream&gt; using...


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

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

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