我如何使矩阵的列等于1?

时间:2017-10-27 15:40:34

标签: c++

我认为这是一个简单的问题! 我有2维数组,所有元素都为0! 现在在每次迭代中,我想使其中一列等于1!例如: 输入= {{0,0},{0,0}} out put:= {{1,0},{1,0}},{{0,1},{0,1}} 我写了这段代码,但结果很奇怪!!!!

  int main() {

int j = 3;
int arr[5][j] = { 0 };
int dx = 0;
for (int g = 0; g < j; g++) {
    for (int t = 0; t < 5; t++) {
        arr[t][g] = 1;

    }
    dx = g;

    for (int d = 0; d < 5; d++) {
        for (int n = 0; n < j; n++) {
            cout << arr[d][n] << " ";
        }
        cout << endl;

    }
    cout << "next column=0" << " " << endl;
}
return 0;
 }

输出是:

1 -1 64

1 2 0

1 0 4272944

1 65535 0

1 0 56

下一栏= 0

1 1 64

1 1 0

1 1 4272944

1 1 0

1 1 56

下一栏= 0

1 1 1

1 1 1

1 1 1

1 1 1

1 1 1

下一栏= 0

1 个答案:

答案 0 :(得分:2)

C ++中的可变长度数组是not allowed。您有几个选项...(通过单击选项编号来查看它们)

选项1

定义一个宏:

#define j 3
int arr[5][j] = {0};

Option 2

定义一个常量变量:

const int j = 3;
int arr[5][j] = {0};

Option 3

使用动态分配的数组(但请确保在您完成后删除它们,以免导致内存泄漏!)

int j = 3;
int** arr = new int*[5];
for(int i = 0; i < 5; i++)
    arr[i] = new int[j];

如果你动态,你需要确保在你完成后解除分配数组:

for(int i = 0; i < 5; i++)
    delete [] arr[i];
delete [] arr;

Option 4

使用C ++标准库容器:

int j = 3;
std::vector<vector<int>> v(5, vector<int>(j, 0));