首页 > 解决方案 > c++中的方阵

问题描述

我做了上面的代码来计算方阵的矩阵,但它不起作用,有人可以向我解释错误吗

#include <iostream>
using namespace std;

int main() {
    int M[3][3]={{2, 4, -6}, {1, 5, 3}, {1, 3, 2}};
    int n, mult;
    n=3;
    cout << "Matrix: " << endl;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++)
            cout << M[i][j] << "\t";
            cout << "\n";
    }
    for (int i=0; i<n; i++){
        for (int j=i+1; j<n; j++){
            mult=M[j][i]/M[i][i];
            for (int k=i; k<n; k++){
                M[j][k]=M[j][k]-mult*M[i][k];
            }
        }
    }
    cout << "Echelon matrix: " << endl;
    for (int i=0; i<n; i++){
        for (int j=i+1; j<n; j++){
            for(int k=i; k<n; k++){
                cout << M[j][k] << "\t";
                cout << "\n";
            }
        }
    }
    return 0;
}

标签: c++

解决方案


在这段代码中,我用 替换intdouble,即使这样,对于这个特定的矩阵,它也可以与int.

主要问题是结果的输出被破坏了,当只需要两个时,3个循环。

请注意,您不检查高斯枢轴M[i][i]是否不为空。应该完成代码来处理这种情况。

输出:

矩阵:

2   4   -6  
1   5   3   
1   3   2   

梯队矩阵:

2   4   -6  
0   3   6   
0   0   3
#include <iostream>
//using namespace std;

int main() {
    double M[3][3]={{2, 4, -6}, {1, 5, 3}, {1, 3, 2}};
    int n = 3;
    std::cout << "Matrix: " << std::endl;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++)
            std::cout << M[i][j] << "\t";
            std::cout << "\n";
    }
    for (int i = 0; i < n; i++){
        for (int j = i+1; j < n; j++){
            double mult = M[j][i]/M[i][i];
            for (int k = i; k < n; k++){
                M[j][k] = M[j][k] - mult*M[i][k];
            }
        }
    }
    std::cout << "Echelon matrix: " << std::endl;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
              std::cout << M[i][j] << "\t";
        }
        std::cout << std::endl;
    }
    return 0;
}

推荐阅读