【发布时间】:2019-07-12 18:59:10
【问题描述】:
我正在尝试通过在我的程序 2d-array 中使用来移动矩阵的零点以获得它的小数。如何正确删除(移位)二维数组的元素?
我知道如何通过排列元素来处理一维数组的这个问题
for (int i = DEL; i < (SIZE - 1); i++)
array[i] = array[i + 1];
其中 DEL - 我们要删除的元素的索引,SIZE - 数组的大小。但是我用多维数组得到的结果不一样:
for (int i = DEL; i < (SIZE - 1); i++)
for (int j = DEL; j < (SIZE - 1); j++)
array[i][j] = array[i+1][j+1];
哪里出错了?
#include <iostream>
using namespace std;
int main()
{
int array[3][3] = {
1, 2, 3,
4, 5, 6,
7, 8, 9};
// Setting to zero 2nd row and 3rd column
int m = 1; // 2
int n = 2; // 3
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
array[m][j] = 0;
array[i][n] = 0;
cout << array[i][j];
// Trying to shift every element, which equals zero
if (array[i][j] == 0)
for (int k = i; k < 2; k++)
for (int l = j; l < 2; l++)
array[k][l] = array[k+1][l+1];
}
cout << endl;
}
cout << endl;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
cout << array[i][j];
cout << endl;
}
}
我明白了:
120
000
780
120
000
780
但实际上我希望最后一个输出是这样的:
120
780
000
【问题讨论】:
标签: c++ arrays multidimensional-array permutation