您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 编程题6_2_运算符重载
名称编程题6_2:矩阵类中的运算符重载备注描述设计一个矩阵类,要求矩阵类中重载运算符加(+)和赋值(=),主函数定义类对象并调用重载的运算符。提示:(1)本题考虑可加(即加与被加矩阵的行列数必须分别相等)和可赋值(等号左值和右值的行列数必须分别相等)情况,其他情况输出“programterminated!”(2)要求分别输入矩阵am和bm的行列数,各矩阵元素,分别计算cm=am+bm;am=bm;并进行输出(3)定义相应的构造函数和析构函数(4)类中的成员变量应当有三个:introw,col;分别表示矩阵的行数和列数,另外还需要定义一个一级指针m用来申请动态空间,存放row*col个整数(5)程序最前面的文件包含提交到系统中请用下面代码:#includeiostreamusingnamespacestd;#includestdlib.h但是在VC++环境下本地测试时,如果你的程序中用到了友元,则要将头文件用下面的代码(提交时再修改为上面的三行):#includeiostream.h#includestdlib.h即本地调试运行正确无误后,再将头文件部分改掉提交!(6)请根据提供的主函数,给出相应的类定义和函数定义。intmain(){introw_a,col_a,row_b,col_b;cout请输入am矩阵的行数和列数:;cinrow_acol_a;Matrixam(row_a,col_a);cout请输入bm矩阵的行数和列数:;cinrow_bcol_b;Matrixbm(row_b,col_b),cm;coutam:endl;am.disp();coutbm:endl;bm.disp();cm=am+bm;coutcm=am+bm:endl;cm.disp();am=bm;coutam=bm:endl;am.disp();return0;}(7)类的成员函数disp的代码如下:voidMatrix::disp(){for(inti=0;irow;i++){cout'\t';for(intj=0;jcol;j++)cout*(m+i*col+j)'\t';coutendl;}}在保存并预览之后,点开:“测试用例”选项卡,再选择下方的“添加”,加入两组测试用例第一个测试用例:输入部分:33回车12345678933回车987654321输出部分:请输入am矩阵的行数和列数:请输入该矩阵元素:请输入bm矩阵的行数和列数:请输入该矩阵元素:am:123456789bm:987654321cm=am+bm:101010101010101010am=bm:987654321第二个测试用例:输入部分:34回车12345678910111233回车987654321输出部分:请输入am矩阵的行数和列数:请输入该矩阵元素:请输入bm矩阵的行数和列数:请输入该矩阵元素:am:123456789101112bm:987654321programterminated!参考源程序代码#includeiostream//说明:在VC++下请将此句改为#includeiostream.husingnamespacestd;//说明:在VC++下请将此句注释#includestdlib.hclassMatrix{int*m,row,col;参考源代码仅供老师参考,不要添加到系统中public:Matrix(int,int);Matrix();~Matrix();friendMatrix&operator+(Matrix&,Matrix&);Matrix&operator=(Matrix&);voiddisp();};Matrix::Matrix(){row=col=0;m=NULL;}Matrix::Matrix(intr,intc){row=r;col=c;m=newint[row*col];cout请输入该矩阵元素:;for(inti=0;irow;i++)for(intj=0;jcol;j++)cinm[i*col+j];}Matrix::~Matrix(){deletem;}Matrix&operator+(Matrix&mat1,Matrix&mat2){if(mat1.col!=mat2.col||mat1.row!=mat2.row){coutprogramterminated!endl;exit(0);}elsefor(inti=0;imat1.row;i++)for(intj=0;jmat1.col;j++)(*(mat1.m+i*mat1.col+j))+=(*(mat2.m+i*mat2.col+j));returnmat1;}Matrix&Matrix::operator=(Matrix&mat){deletem;m=newint[mat.row*mat.col];row=mat.row;col=mat.col;for(inti=0;irow;i++)for(intj=0;jcol;j++)*(m+i*col+j)=*(mat.m+i*mat.col+j);return*this;}voidMatrix::disp(){for(inti=0;irow;i++){cout'\t';for(intj=0;jcol;j++)cout*(m+i*col+j)'\t';coutendl;}}intmain(){introw_a,col_a,row_b,col_b;cout请输入am矩阵的行数和列数:;cinrow_acol_a;Matrixam(row_a,col_a);cout请输入bm矩阵的行数和列数:;cinrow_bcol_b;Matrixbm(row_b,col_b),cm;coutam:endl;am.disp();coutbm:endl;bm.disp();cm=am+bm;coutcm=am+bm:endl;cm.disp();am=bm;coutam=bm:endl;am.disp();return0;}★说明:(1)请各位按上表格式,第一列不变,第二三列为各位根据题目填写(2)允许的编程语言:选gc++,(3)名称和描述两项请将文档第二列内容对应贴入系统中(4)测试用例请各位自己添加,题目的最后已有描述,每个题目也说明了要给几组测试用例(5)其他选项可以自行设定,例如开启时间,结束时间,等等,需要大家逐步熟悉
本文标题:编程题6_2_运算符重载
链接地址:https://www.777doc.com/doc-5475432 .html