Ошибка при переносе данных из матрицы во временную
я попытался выполнить задание:
Добавить строки после каждой четной строки матрицы
но у меня ошибка при переносе данных из старой матрицы во временную что я опять не так сделал? Прошу прошения если вопрос плохо оформлен.
Line=line+line/2;
int**tmpMatrix =new int*[Line];
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<Line;i+=2)
{
for (int j = 0; j < column; j++)
{
tmpMatrix[i][j] = ((rand() % 10));
}
}
for (int i=1;i<line;i+=2)
{
for (int j = 0; j < column; j++)
{
tmpMatrix[i+1][j] = Matrix[i][j];
}
}
cout<<"TEST:\n";
for (int i = 0; i < Line; i++)
{
for (int j = 0; j < column; j++)
{
cout << setw(2) << tmpMatrix[i][j];
}
cout << endl;
}
}
Ответы (1 шт):
Автор решения: Павел Ериков
→ Ссылка
Вы не учли, тот факт что если берете четную строчку из исходной матрицы, то во временной матрице это будет строка не с тем же индексом, что в исходной из-за вставленной новой строчки.
Вот пример выходных данных с небольшим объяснением:

А вот пример рабочего кода:
Line = line + line / 2;
int** tmpMatrix = new int* [Line];
for (int i = 0; i < Line; i++)
for (int j = 0; j < column; j++)
tmpMatrix[i] = new int[column];
for (int i = 0, k = 0; i < line; i += 2, k += 3)
for (int j = 0; j < column; j++)
tmpMatrix[k][j] = Matrix[i][j];
for (int i = 1; i < Line; i += 3)
for (int j = 0; j < column; j++)
tmpMatrix[i][j] = ((rand() % 10));
for (int i = 1, k = 2; i < line; i += 2, k += 3)
for (int j = 0; j < column; j++)
tmpMatrix[k][j] = Matrix[i][j];
