Ошибка в матрице
я попытался выполнить задание:
Добавить строки после каждой четной строки матрицы
но к сожалению в этот месте у меня крах программы что не так я сделал ?
for (int i = 1; i < line2; i+=2)
{
for (int j = 0; j < column; j++)
{
tmpMatrix[i][j] = ((rand() % 10));
}
}
полный код вот :
int line = 0;
int column = 0;
cout<<"\nEnter the number of lines:";
cin>>line;
cout<<"Enter the number of columns:";
cin>>column;
int**Matrix =new int*[line];
for (int i = 0; i < line; i++)
{
for (int j = 0; j < column; j++)
{
Matrix[i] =new int[column];
}
}
for (int i = 0; i < line; i++)
{
for (int j = 0; j < column; j++)
{
Matrix[i][j] = ((rand() % 10));
}
}
for (int i = 0; i < line; i++)
{
for (int j = 0; j < column; j++)
{
cout << setw(2) << Matrix[i][j];
}
cout << endl;
}
int line2=2*line;
int** tmpMatrix = new int*[line2];
for (int i = 0; i < line; i++)
{
for (int j = 0; j < column; j++)
{
tmpMatrix[i] = new int[column];
}
}
for (int i = 0; i < line; i+=2)
{
for (int j = 0; j < column; j++)
{
tmpMatrix[i][j]=Matrix[i][j];
}
}
for (int i = 1; i < line2; i+=2)
{
for (int j = 0; j < column; j++)
{
tmpMatrix[i][j] = ((rand() % 10));
}
}
Прошу прошения если мой вопрос оформлен некорректно.
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
int line2=2*line;
Т.е. удвоенное число. Отлично
int** tmpMatrix = new int*[line2];
Оно и выделено - все просто замечательно!
for (int i = 0; i < line; i++)
{
Ой. Инициализируем только половину, вторая половина указателей с мусором...
for (int j = 0; j < column; j++)
{
Несмотря на то, что каждый указатель инициализируется column раз - наверное, для надежности и утечки памяти?...
tmpMatrix[i] = new int[column];