《编程题运算符重载》由会员分享,可在线阅读,更多相关《编程题运算符重载(8页珍藏版)》请在金锄头文库上搜索。
1、文档供参考,可复制、编制,期待您的好评与关注! 名称编程题6_2:矩阵类中的运算符重载备注描述设计一个矩阵类,要求矩阵类中重载运算符加()和赋值(),主函数定义类对象并调用重载的运算符。 提示: (1) 本题考虑可加(即加与被加矩阵的行列数必须分别相等)和可赋值(等号左值和右值的行列数必须分别相等)情况,其他情况输出 “ program terminated! ” (2) 要求分别输入矩阵 am 和 bm 的行列数,各矩阵元素,分别计算 cm=am+bm;am=bm; 并进行输出 (3) 定义相应的构造函数和析构函数 (4) 类中的成员变量应当有三个: int row,col; 分别表示矩阵的
2、行数和列数,另外还需要定义一个一级指针m用来申请动态空间,存放 row*col 个整数 ( 5 )程序最前面的文件包含提交到系统中请用下面代码: #include using namespace std;#include 但是在VC+环境下本地测试时,如果你的程序中用到了友元,则要将头文件用下面的代码(提交时再修改为上面的三行):#include #include 即本地调试运行正确无误后,再将头文件部分改掉提交!(6) 请根据提供的主函数,给出相应的类定义和函数定义。 int main()int row_a,col_a,row_b,col_b;coutrow_acol_a;Matrix am
3、(row_a,col_a);coutrow_bcol_b;Matrix bm(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();return 0;(7) 类的成员函数 disp 的代码如下: void Matrix:disp() for(int i=0;irow;i+) coutt; for(int j=0;jcol;j+) cout*(m+i*col+j)t; coutendl; 在保存并
4、预览之后,点开:“测试用例”选项卡,再选择下方的“添加”,加入两组测试用例第一个测试用例:输入部分:3 31 2 3 4 5 6 7 8 93 39 8 7 6 5 4 3 2 1输出部分:请输入am矩阵的行数和列数:请输入该矩阵元素:请输入bm矩阵的行数和列数:请输入该矩阵元素:am:123456789bm:987654321cm=am+bm:101010101010101010am=bm:987654321第二个测试用例:输入部分:3 41 2 3 4 5 6 7 8 9 10 11 123 39 8 7 6 5 4 3 2 1输出部分:请输入am矩阵的行数和列数:请输入该矩阵元素:请输入
5、bm矩阵的行数和列数:请输入该矩阵元素:am:123456789101112bm:987654321program terminated!参考源程序代码#include /说明:在VC+下请将此句改为#include using namespace std; /说明:在VC+下请将此句注释#include class Matrixint *m,row,col;public:Matrix(int ,int);Matrix();Matrix();friend Matrix &operator+(Matrix &,Matrix &);Matrix & operator=(Matrix &);void
6、 disp();Matrix:Matrix()row=col=0;m=NULL;Matrix:Matrix(int r,int c)row=r;col=c;m=new introw*col;cout请输入该矩阵元素:;for(int i=0;irow;i+)for(int j=0;jmi*col+j;Matrix:Matrix()delete m;Matrix &operator+(Matrix &mat1,Matrix &mat2)if(mat1.col!=mat2.col|mat1.row!=mat2.row)coutprogram terminated!endl;exit(0);else
7、for(int i=0;imat1.row;i+)for(int j=0;jmat1.col;j+)(*(mat1.m+i*mat1.col+j)+=(*(mat2.m+i*mat2.col+j);return mat1;Matrix & Matrix:operator=(Matrix &mat)delete m;m=new intmat.row*mat.col;row=mat.row;col=mat.col;for(int i=0;irow;i+)for(int j=0;jcol;j+)*(m+i*col+j)=*(mat.m+i*mat.col+j);return *this;void M
8、atrix:disp()for(int i=0;irow;i+)coutt;for(int j=0;jcol;j+)cout*(m+i*col+j)t;coutendl;int main()int row_a,col_a,row_b,col_b;coutrow_acol_a;Matrix am(row_a,col_a);coutrow_bcol_b;Matrix bm(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();return 0;参考源代码仅供老师参考,不要添加到系统中 说明:(1)请各位按上表格式,第一列不变,第二三列为各位根据题目填写(2)允许的编程语言: 选gc+,(3)名称和描述两项请将文档第二列内容对应贴入系统中(4)测试用例请各位自己添加,题目的最后已有描述,每个题目也说明了要给几组测试用例(5)其他选项可以自行设定,例如开启时间,结束时间,等等,需要大家逐步熟悉 /