我创建了以下问题,(目前)将计算行列式或矩阵。(我将扩展它,这就是我输入维度和矩阵的原因)。
已编辑--->>> 仍然存在的问题:
- 它无法识别我的函数中的变量“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]
线。请注意,您还需要初始化 mat
的 each 行;您的 allocate
方法执行此操作并且应该从构造函数中调用。
关于C++矩阵计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5141989/