还剩1页未读,继续阅读
文本内容:
用C++编写一个矩阵类,可实现矩阵的初始化、输入和输出,矩阵的转置、加法、减法、乘法等功能,要求对运算符+-》*《等进行重载给出完整的测试代码和结果(主函数中的测试矩阵可以是2行3列等大小的小型矩阵)运行结果:Matrix a2,2:
0.
180.
020.
380.60Matrix b2,2:
0.
890.
080.
080.48a+b:2,2:
1.
080.
100.
461.08a*b:2,2:
0.
160.
030.
390.32Process exitedafter
0.04421seconds withreturn value0请按任意键继续・・・完整实现:#include iostream#include cstdlib#include cstring#include cassert#include ctime#include iomanipusing namespacestd;template classT classMatrix{public:int m,n;private:T*data;public://constructor Matrixintr=0,int c=0:mr,ncifr0c0data=new T[m*n];if data==NULLcerrAllocate memory failed!endl;exitl;memsetdataJ0,m*n*sizeofT;else data=NULL;}//deconstructor~Matrix{m=n=0;delete[]data;data=NULL;//entry accessT operatorinti,int jasserti=0imj=0jn;return data[i+j*m];//assign MatrixT operator=MatrixT a{m=a.m;n=a.n;data=new T[m*n*sizeofT];if data==NULL{cerrH Allocatememoryfailed!Hendl;exitl;for inti=0;im;i++for intj=0;jn;j++data[i+j*m]=ai,j;return*this;//display voiddisplay{coutm,n11:endl;for inti=0;im;i++for intj=0;jn;j++coutfixedsetprecision2data[i+j*m]M\t;coutendl;};template classT inlineMatrixT operator+MatrixT a,MatrixT b{asserta.m==b.ma.n==b.n;MatrixT ra・%a.n;for inti=0;ia.m;i++for intj=0;ja.n;j++ri,j=ai,j+bi,j;return r;}template classT inlineMatrixT operator-MatrixT a“MatrixT b{asserta.m==b.ma.n==b.n;MatrixT ra.mJ a.n;for inti=0;ia.m;i++for intj=0;ja.n;j++ri,j=ai,j-bi,j;return r;}template classT inlineMatrixToperator*l vlatrixT a,MatrixT basserta.n==b.m;MatrixT ra.m b.n;for inti=0;ia.m;i++for intj=0;jb.n;j++for intk=0;ka.n;k++ri,j+=ai,k*bk,j;return r;}一int main{int m=2,n=2;Matrixdouble am,n;Matrixdouble bmJn;srandunsignedtimeNULL;for inti=0;im;i++for intj=0;jn;j++{ai,j=doublerand/RANDOMAX;bi,j=doublerand/RAND_MAX;coutMatrix a;a.display;coutendl;coutMatrix b;b.display;coutendl;Matrixdouble c%n;c=a+b;couta+b,c.display;coutendl;Matrixdouble dm,n;d=a*b;couta*b;d.display;coutendl;return0;。