Я пытаюсь удалить последнюю строку и последний столбец двухмерного массива.Я создал этот метод для этой цели.
void deleteLastRowColumn(int **A, int row, int column)
{
int **temp = A;
A = new int *[row - 1];
for (int i = 0; i < row - 1; i++)
{
A[i] = new int[column - 1];
for (int j = 0; j < column - 1; j++)
{
A[i][j] = temp[i][j];
}
delete[] temp[i];
}
}
и печать результата с помощью
void printArray(int **a, int row, int column)
{
for (int i = 0; i < row; i++)
{
for (int j = 0; j < column; j++)
{
cout << a[i][j] << " ";
}
cout << endl;
}
}
И мой основной метод создает массив 5x5
int main()
{
int **a;
a = new int *[5];
for (int i = 0; i < 5; i++)
a[i] = new int[5];
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 5; j++)
{
a[i][j] = (i*5) + j + 1;
}
}
printArray(a, 5, 5);
cout << "\n\n\n\n";
deleteLastRowColumn(a,5,5);
printArray(a,4,4);
}
Вывод не имеет смысла для меня:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
6 7 8 9
11 12 13 14
16 17 18 19
0 0 18 19
Я ожидал, что он удалит последний столбец и последний ряд, но произошло что-то другое.Если вы можете объяснить мне, что здесь не так, это было бы здорово!
Спасибо.