试图删除二维数组的最后一行和最后一列

时间:2018-11-22 13:53:30

标签: c++ arrays dynamic-arrays

我正在尝试删除2d数组的最后一行和最后一列。我为此创建了此方法。

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 

我希望它删除最后一列和最后一行,但是发生了一些不同。如果您能解释一下这是怎么回事,那太好了!

谢谢。

0 个答案:

没有答案