C ++多维数组有助于删除行和列

时间:2016-06-12 23:13:00

标签: multidimensional-array

我需要有人告诉我如何为这个矩阵编写简单易懂的代码 在本练习中,搜索删除行和列: const int n = 4, m = 4; int A[n][m] = { { 2, -8, -7, 5 },{ 4, -7, -8, 2 },{ 1, 10, 3, 6 },{ 4, 7, 9, -3 } }; int i, j, r, k, B[n][m];

变量r代表需要删除的行 变量k代表需要删除的列 B [n] [m]代表将在控制台上显示的新矩阵 等待回答 那是我的代码:

    const int n = 4, m = 4;
int A[n][m] = { { 2, -8, -7, 5 },
{ 4, -7, -8, 2 }, 
{ 1, 10, 3, 6 },
{ 4, 7, 9, -3 } };
int i, j, r, k, B[n][m];
cout << "give a value r and k:";
cin >> r >> k;
for (i = 0; i < n; i++)
{
    for (j = 0; j < m; j++)
    {
        if ((i < r) && (j < k))
            B[i][j] = A[i][j];
        if ((i >= r) && (j < k))
            B[i][j] = A[i + 1][j];
        if ((i < r) && (j >= k))
            B[i][j] = A[i][j + 1];
        if ((i >= r) && (j >= k))
            B[i][j] = A[i + 1][j + 1];
    }
}
cout << "Matrix B ={" << endl;
for (i = 0; i < n - 1; i++)
{
    for (j = 0; j < m - 1; j++)
    {
        cout.width(3);
        cout << B[i][j];
    }
    cout << endl;

但这里有什么东西混淆了我:     if((i&lt; r)&amp;&amp;(j&lt; k))                 B [i] [j] = A [i] [j];             if((i&gt; = r)&amp;&amp;(j&lt; k))                 B [i] [j] = A [i + 1] [j];             if((i&lt; r)&amp;&amp;(j&gt; = k))                 B [i] [j] = A [i] [j + 1];             if((i&gt; = r)&amp;&amp;(j&gt; = k))                 B [i] [j] = A [i + 1] [j + 1];         } 这是我经常搞砸的部分 有人能告诉我更简单的方法吗?

0 个答案:

没有答案