c ++ Попытка удалить последнюю строку и столбец 2d массива - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь удалить последнюю строку и последний столбец двухмерного массива.Я создал этот метод для этой цели.

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 

Я ожидал, что он удалит последний столбец и последний ряд, но произошло что-то другое.Если вы можете объяснить мне, что здесь не так, это было бы здорово!

Спасибо.

...