Dyanamic 2d массив в C ++ с использованием двойного указателя

У меня есть следующий код, я убедился, что я сделал все, как описано в Указатель на указатель динамический двумерный массив

Мне нужно, чтобы моя двумерная матрица была дианмичной, то есть пользователю необходимо ввести размеры. Но я получаю ошибку в моем cin, когда принимаю форму ввода пользователя. что не так со следующим кодом?

int numberOfRows, numberOfColumn;
cout << "Please enter the number of rows: ";
cin >> numberOfRows;
cout << endl << "Please enter the number of columns ";
cin >> numberOfColumn;int** matrix= new int*[numberOfRows];

for (int i=0; i<numberOfRows; i++)
{
matrix[numberOfRows]= new int[numberOfColumn];
}

for (int i=0; i<numberOfRows; i++)
{
for(int j=0; j<numberOfColumn; j++)
{
cout << "Please enter Row " << (i+1) << " Column "<< (j+1) <<" element: ";
cin>> matrix[i][j];
cout << endl;
}
}

for (int i=0; i<numberOfRows; i++)
{

for(int j=0; j<numberOfColumn; j++)
{
cout << matrix[i][j];
}
}

0

Решение

Распределяя память в цикле for

matrix[i]= new int[numberOfColumn];
instead of matrix[numberOfRows]= new int[numberOfColumn];

Примечание: вам также необходимо освободить выделенную память

исправленный код

http://ideone.com/ILw1qa

1

Другие решения

У вас есть это:

  for (int i=0; i<numberOfRows; i++)
{
matrix[numberOfRows]= new int[numberOfColumn];
}

Должно быть:

  for (int i=0; i<numberOfRows; i++)
{
matrix[i]= new int[numberOfColumn];
}

Обратите внимание, что matrix[numberOfRows] изменился на matrix[i]

1

По вопросам рекламы [email protected]