Консультация № 16915
12.02.2005, 00:37
0.00 руб.
0 5 5
Здравствуйте, уважаемые эксперты.
Как можно создать двумерный массив mxn, если его размеры (числа m и n) заранее неизвестны? Я пробовал таким образом (см. приложение). Подскажите, также, что я там сделал не так или это вообще не имеет смысла?

Приложение:
int* ppInt = (int**) new int[4 * 4]; int x = ppInt[0][0];Ведь такая штука работает:DPN_SERVICE_PROVIDER_INFO *SPInfo = NULL;SPInfo = (DPN_SERVICE_PROVIDER_INFO*) new BYTE[dwSize];

Обсуждение

Неизвестный
12.02.2005, 13:15
общий
это ответ
Здравствуйте, Александр Николаевич!
Так и надо создавать. Сначала int ** p = new int*[m]; потом в цикле, для каждого p[i] создавать new int[n].
Неизвестный
12.02.2005, 13:27
общий
это ответ
Здравствуйте, Александр Николаевич!
int** mas = new int*;
for(int i = 0; i < N; i++)
{
mas[i] = new int[M];
for(int j = 0; j < M; j++)
{
mas[i][j] = i+j;
printf("%d, ", mas[i][j]);
}
puts("");
}
Неизвестный
12.02.2005, 16:44
общий
это ответ
Здравствуйте, Александр Николаевич!
При создании динамического двумерного масива типа int надо делать так:<p><h6>* EMan 2 beta: back in Black :)</h6>

Приложение:
int** m = new int*[m];for(int i=0 ; i<m ; i++){ m[i]=new int[n];}//...delete[] m;
Неизвестный
12.02.2005, 17:20
общий
это ответ
Здравствуйте, Александр Николаевич!
Ну вообще ваша идея правильна только нужно:
int *k;
k=new int[m*n]
Неизвестный
15.02.2005, 12:47
общий
это ответ
Здравствуйте, Александр Николаевич!
Двухмерный массив создается так :
//создаем строку
int **sss = new (int *)[m];
//а теперь создаем столбцы
for(int i = 0;i < m;i++)
sss[i] = new (int *)[n];
Удалять его нужно так же - сначала столбцы, а потом строку.
Форма ответа