段错误

it2022-05-09  34

实现一个矩阵乘法,主函数有矩阵类m1,m2,m3,重载 * ,运行结果正确却有段错误,求解 ???

#include<iostream> #include<iomanip> using namespace std; class matrix{ private: int row; int column; int **mat; public: matrix(int r=0,int c=0); void display(); ~matrix(); void import(); friend matrix operator * (matrix &a,matrix &b); }; matrix::matrix(int r,int c):row(r),column(c){ if(row==0 || column==0) mat=NULL; else {mat=new int *[row]; for(int i=0;i<row;i++) mat[i]=new int[column];} } void matrix::import(){ for(int i=0;i<row;i++) for(int j=0;j<column;j++) cin>>mat[i][j]; } void matrix::display(){ for(int i=0;i<row;i++){ for(int j=0;j<column;j++){ cout<<setw(10)<<mat[i][j]; } cout<<endl; } } matrix operator * (matrix &a,matrix &b){ matrix c(a.row,b.column); if(a.column!=b.row) cout<<"Invalid Matrix multiplication!"<<endl; for(int i=0;i<a.row;i++){ for(int j=0;j<b.column;j++){ for(int k=0;k<a.column;k++){ c.mat[i][j] += (a.mat[i][k]*b.mat[k][j]); } } } return c; } matrix::~matrix(){ for(int i=0;i<row;i++) delete [] mat[i]; delete [] mat; } int main(){ int r1,c1,r2,c2; cin>>r1>>c1; matrix m1(r1,c1); m1.import(); cin>>r2>>c2; matrix m2(r2,c2); m2.import(); matrix m3(r1,c2); m3=m1*m2; m3.display(); return 0; }

转载于:https://www.cnblogs.com/Martrix-revolution/p/9495785.html


最新回复(0)