2个矩阵相加和相乘的C++程序

标签 c++ matrix

我用 C++ 编写了这段代码,使用运算符重载对 2 个矩阵进行加法和乘法运算。当我执行代码时,它会在第 57 行和第 59 行产生错误,非法结构操作(两行都出现相同的错误)。请解释我的错误。提前致谢:)

class matrix{
public:
int i, j, row, col, mat[10][10];
void input();
matrix operator+(matrix mm2);
matrix operator*(matrix mm2);
void output();
};
void matrix::input(){
cout<<"\nEnter number of rows and columns : ";
cin>>row>>col;
cout<<"\nEnter the elements : ";
for(i=0; i<row; i++){
    for(j=0;j<col;j++){
        cin>>mat[i][j];
    }
}
}
matrix matrix::operator+(matrix mm2){
matrix temp;
temp.row=row;
temp.col=col;
for(i=0; i<temp.row; i++){
    for(j=0; j<temp.col; j++){
        temp.mat[i][j]=mat[i][j]+mm2.mat[i][j];
    }
}
return temp;
}
matrix matrix::operator*(matrix mm2){
matrix temp;
temp.row=row;
temp.col=col;
for(i=0; i<temp.row; i++){
    temp.mat[i][j]=0;
    for(j=0; j<temp.col; j++){
        temp.mat[i][j]+=mat[i][j]*mm2.mat[i][j];
    }
}
return temp;
}
void matrix::output(){
cout<<"Matrix is : ";
for(i=0;i<row;i++){
    for(j=0;j<col;j++){
        cout<<mat[i][j]<<"\t";
    }
    cout<<"\n";
}
}
int main(){
matrix m1, m2, m3;
clrscr();
m1.input();
m2.input();
m3=m1+m2;
cout<<"\nSum is "<<m3.output();
m3=m1*m2;
cout<<"\nProduct is "<<m3.output();
getch();
return 0;
}

最佳答案

output() 是一个函数,不能直接放在 cout 流上。只需在单独的行中调用它即可。

改变

cout<<"\nSum is "<<m3.output();
...
cout<<"\nProduct is "<<m3.output();

cout<<"\nSum is ";
m3.output();
...
cout<<"\nProduct is ";
m3.output();

或者,您可以为矩阵类重载 << 运算符。然后你可以做

cout<<"\nSum is "<<m3;
...
cout<<"\nProduct is "<<m3;

关于2个矩阵相加和相乘的C++程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21794803/

相关文章:

java - 不切片返回抽象类的实例

java - 我的程序给了我一个 StackOverflowError

python - Python : Why do I get error message when I try to calculate the inverse of my 2x2-matrix (Hessian)?

使用 OpenMP 的 C++ 并行平均矩阵

java - 在矩阵中按降序排列数字的边框

c++ - 'ofstream' 和 'fstream' 读取文件

c++ - 错误: 'ALIGN' undeclared (first use in this function) with ALIGN defined into macro

algorithm - 存在大小为 NxN 的 Hadamard 矩阵

c++ - 如何在静止图像opencv c++中执行canny edge后识别汽车

c++ - 内联限定符源于原型(prototype)还是定义?