C++矩阵计算

标签 c++ matrix

我创建了以下问题,(目前)将计算行列式或矩阵。(我将扩展它,这就是我输入维度和矩阵的原因)。

已编辑--->>> 仍然存在的问题:

  • 它无法识别我的函数中的变量“mat”。

错误:“mat”未在此范围内声明

 #include <iostream>
 #include <cstdio>
 #include <cstdlib> 
 #include <cmath>

using namespace std;

class matrix {
private:
int rows,columns;

public:
//constructor
matrix ()
{}
matrix(int _rows,int _columns) : rows(_rows),columns(_columns){
{
 int **mat=new int *[rows];
    for (int r = 0; r < rows; ++r)
        mat[r] = new int[columns];
}

}
//destructor
~matrix(){
for (int r = 0; r < rows; ++r)
        delete[] mat[r];
    delete[] mat;

}

//void allocate();
void getdata() {

cout <<"Enter number of rows :"<<endl;
cin >>rows;
cout <<"Enter number of columns : "<<endl;
cin >> columns;

}
void fill();
double determinant();
void showdata(){

}

};



int main()
{
matrix a;

a.getdata();
a.fill();
a.determinant();

    return 0;
}



//fills the matrix
void matrix ::fill(){

    for(int i=0;i<rows;i++) {
        for(int j=0;j<columns;j++){
        cout <<"Enter the elements in a line separated by whitespace :"<<endl;
        cin >>mat[i][j];
        }
    }

}
//calculate the determinant
double matrix :: determinant (){
    double det;
    det = mat[rows][columns]*mat[rows+1][columns+1] - mat[rows][columns+1]*mat[rows+1][columns];
    cout <<"The determinant of matrix is :"<<det<<endl;}

最佳答案

您要做的是将 mat 初始化为一个动态大小的数组。正如您的编译器告诉您的那样,这不能在常量表达式中完成。

您必须为 matrix 类编写构造函数,它将 rows 作为参数并包含 mat=new int *[rows] 线。请注意,您还需要初始化 mateach 行;您的 allocate 方法执行此操作并且应该从构造函数中调用。

关于C++矩阵计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5141989/

相关文章:

c++ - 发送文件到 HTTP 服务器 (C++ Wininet)

c++ - 旋转,通过头文件在opengl中翻译?

c++ - 如何使用 UTF-8 编码将 LPWSTR 转换为 char *

MATLAB 手动错误?

c - 找出 C 中 k 个最小值的索引

c++ - 通用库是否包含任何普通用户无法编写的代码?

c++ - ShowWindow() 立即隐藏 SW_HIDE 窗口,没有效果

python - 矩阵乘法。 python

python - 将对角矩阵提高到负幂 1/2

python - 矩阵翻转水平或垂直