C++矩阵类重载运算符.docx_第1页
C++矩阵类重载运算符.docx_第2页
C++矩阵类重载运算符.docx_第3页
C++矩阵类重载运算符.docx_第4页
C++矩阵类重载运算符.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C+数据与结构第三次作业潘隆武21425202机械工程题目:在已建立N*M的矩阵类前提下,重裁运算符“+” 、“*”、"廿、"vv ,*»0#in CIUdeVioStream>#in clude<ioma nip>USing n amespace std;class Matrix(public:MatriX();默认构造由数MatriX(int ,int);初始化构造函数MatriX(COnst Matrix &);拷贝构造函数Matrix();析构函数Matrix OPerator+(Matrix &);Matrix OPer

2、ator*(Matrix &);Matrix OPeratOr=(MatriX &);frie nd istream & OPerator»(istream &,M atrix &);frie nd OStream & OPerator«(oStream &,M atrix &); private:int row;int colu mn;double *pt;主函数int mai n()(SyStem(uCOLOR 0eH);int r,c;Matrix tempi,temp2;cout<v”请输入矩阵M

3、1的行数(N)和列数(M ) : "«endl;cin» r»c;Matrix M1(r,c);Cin »M1;cout<v”请输入矩阵M2的行数(N)和列数(M ) : "«endl;cin» r»c;Matrix M2(r,c);cin» M2;cout«"=««e ndl;cout«HM 1 -'«e ndl«M1«e ndl;cout«HM2=M«e ndl«M2&

4、#171;e ndl;cout«,= =««e ndl;cout«HM1 与 M2 的运算结果:"vvendlwendl;temp1=M1+M2;temp2=M1*M2;cout«HM 1 +M2=,«e ndl«temp1«e ndl;cout«HM 1 *M2=,«e ndl«temp2«e ndl;return 0;)zz创建默认矩阵MatriX:MatriX()(row=0;colu mn=0;pt=NULL;)ZZ创建row行column列的矩阵,并将其初

5、始化为零阵Matrix::MatriX(i nt r,i nt c):row(r),colum n(c)(if(row<1 | | colu mn <1)cout<<”矩阵的行数和列数都必须大于0! "«endl;else(pt=new double*row;for(i nt i=0;i<row;i+)(*(pt+i)=new doublecolu mn;for(i nt j=0;j<colu mn ;j+)(*(*(pt+i)+j)=O.O;)拷贝构造函数,以矩阵 A创建新矩阵B并以A对B进行初始化MatriX:MatriX(CO ns

6、t Matrix &m)row=m.row;colu mn=m.colu mn;pt=new double*row; for(i nt i=0;i<row;i+)*(pt+i)=new doublecolu mn;for(i nt j=0;j<colu mn ;j+)(V(Pt+i)+j)=m.ptiO;)析构曲数,对堆中的动态空间进行释放MatriX:-Matrix()(if(pt!=NULL)(for(i nt i=0;i<row;i+)deleteQ pti;deleteQ pt;)对">>"进行重载' 使它具有输入矩阵的

7、功能istream & OPerator»(istream &in put,Matrix &m)(H«e ndl;coutvv”请输入"vvm.rowm.columy个数作为矩阵元素:for(i nt i=0;i<m.row;i+)(for(i nt j=0;j<m.colu mn ;j+)(in put»m.pti0;)return in put;)对" <<"进行重载,使它具有输出矩阵的功能OStream & OPerator«(ostream &outpu

8、t,Matrix &m)(for(i nt i=0;i<m.row;i+)(for(i nt j=0;j<m.colu mn ;j+)(OUtPUt«left«setw(5)<<m.pti|j;OUtPUt«e ndl;)return output;)对"+"进行重载,使它具有将两个同型矩阵相加的功能Matrix Matrix::oPerator+(Matrix &m)(Matrix temp;if(row!=m.row I I colu mn !=m.colu mn)cout<<"

9、矩阵M1和矩阵M2不是同类型矩阵,不能相加!else(temp.row=row;temp.colu mn=ColU mn;temp.pt=new double*temp.row;for(i nt i=0;i<temp.row;i+)(temp.pti=new doubletemp.colu mn;for(i nt j=0;j<temp.colu mn ;j+)(temp.ptiD=ptiO+m.ptiOJ;)return temp;)对伊”进行重载,使它具有将两个符合相乘条件的矩阵相乘的功能Matrix Matrix::oPerator*(Matrix &m)(Matrix

10、 temp;if(colu mn !=m.row)cout<<”矩阵M1的列数和矩阵M2的行数不相等,不能相乘!else(temp.row=row;temp.colu mn=m.colu mn;temp.pt=new double*temp.row;for(i nt i=0;i<temp.row;i+)(temp.pti=new doubletemp.colu mn;for(i nt j=0;j<temp.colu mn ;j+)M«endl«endl;H«endl«endl;double sum=0;for(i nt k=0;k

11、<colu mn; k+)( SUm=SUm+p tik*m.ptkj;) temp.ptiO=sum;)return temp;)对三"进行重载,使它具有将一个矩阵赋给另一矩阵的功能 Matrix Matrix::oPerator=(MatriX &m)(row=m.row;colu mn=m.colu mn;pt=new double*m.row;for(i nt i=0;i<m.row;i+)(pti=new doublem.colu mn;for(i nt j=0;j<m.colu mn ;j+)(ptiO=m.ptij;)return *this;

12、程序运行结果:"E:tSOFTDOC U M ENT%C + +2(ADebug20.eKe请输入矩阵总的行数(N)和列数(内).;青备入9个数作为矩阵元素: 123654789请输入矩阵2的行数(N)和列故(H)»$5人9个数作为矩阵元素, 987456321止与池的运算结果:1PND-拓 2422168176L2211410GPre®S aflSJ key to CDntinup F ezSOFffz>CL M E NnC + + 2 CADebugVVext-1 三%三请输入矩阵M的行数(N)和列数(H), 褊|入12个数作为矩阵元素:1 2 3 6 S 4 7 8 9 10 11 12请输入矩阵"2的行敌(H)和列数(H):京备入12个数作为矩阵元素:123456789 10 11 12m与H2的a宜寤豆矩阵取的列数和矩阵H2的行数不相等,不能相乘!Press any key to cont inue E:SOFTDOCUMENTC+ +20Debug20.exe-请

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论