在C++中更改矩阵的值

velaa5lx  于 2022-11-19  发布在  其他
关注(0)|答案(1)|浏览(146)

我需要通过将对角线下的所有元素设置为0来得到矩阵的上三角形。
下面是我编写的代码:

#include <iostream>
#include <vector>
using namespace std;

vector<vector <int>> upper_triangle(vector<vector <int>> n) {
    int rij = n.size();
    int kolom = n.size();
    vector<vector<int>> result = n;
    for (int i = 0; i < rij; i++) {
        for (int j = 0; j < kolom; j++) {
            if (i > j) {
                result[i][j] = 0;
            }

        }
        return result;
    }
}

我得到的输出只是矩阵本身,这不是我所需要的。

{{10,11,12},{13,14,15},{16,17,18}}
{{1,2,3},{4,5,6},{7,8,9}}
{{1,2},{3,4}}

我需要的输出为:

{{10,11,12},{0,14,15},{0,0,18}}
{{1,2,3},{0,5,6},{0,0,9}}
{{1,2},{0,4}}
vulvrdjw

vulvrdjw1#

你只是把return result;放在了错误的位置。

vector<vector <int>> upper_triangle(vector<vector <int>> n) {
    int rij = n.size();
    int kolom = n.size();
    vector<vector<int>> result = n;
    for (int i = 0; i < rij; i++) {
        ...
    }
    return result;
}

不是这个

vector<vector <int>> upper_triangle(vector<vector <int>> n) {
    int rij = n.size();
    int kolom = n.size();
    vector<vector<int>> result = n;
    for (int i = 0; i < rij; i++) {
        ...
        return result;
    }
}

当然,缩进代码的目的是使这样的错误更容易被发现。

相关问题