


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+课程设计-矩阵简单的计算器、设计目的1、熟练掌握和运用C+编写程序代码的能力。2、初步了解输入、建立并输出矩阵以及矩阵加法、减法、乘法、赋值和转置的算法设 计。3、掌握根本的运算符重载函数的书写。4、掌握静态数据成员和静态成员函数的具体声明和实现,体会它们的特殊作用。5、掌握并体会动态内存分配的实际应用。6、运用简单的循环实现简单的菜单程序。、总体设计UML图Matrix-nu m:i nt*-len gth:i nt-width:i nt-flag:i nt=O+Matrix(int l:int, w:int, n:int*)+Matrix()+Matrix(jz :Matrix &am
2、p;)+set nu m(l :int, w :int) :void+operator+(c onst jz: Matrix &): Matrix+operator-(co nst jz:Matrix & ):Matrix+operator*(const jz :Matrix &): Matrix+zhua nzhi():Matrix+show():void+Matrix()<<static>> +getflag():i ntvoid get mn (i nt &m,i nt &n)(2)流程图三、详细设计1类中的函数功能及实现1
3、、有参数的构造函数Matrix( int l,i nt w,i nt *n);实现:Matrix:Matrix( int l,i nt w,i nt *n)len gth=l;width=w;num=new in tle ngth*width; int *p=num;for(i nt i=0;i<le ngth*width;i+) *p+=*n+; 说明:为有参数的对象变量初始化。2、无参构造函数默认形式的构造函数Matrix()实现:Matrix:Matrix()length=1;width=1;num=new int(1); 说明:为无参数的对象进行初始化。3、矩阵的拷贝构造函数 M
4、atrix:Matrix(Matrix &jz) 实现:Matrix:Matrix(Matrix &jz)length=jz.length;width=jz.width;num=new intlength*width;for(int i=0;i<length*width;i+)*(num+i)=*(jz.num+i); 目的:用已存在的对象 jz 去初始化新建立的对象。4、矩阵输入函数 void Matrix:setnum(int l,int w)实现:void Matrix:setnum(int l,int w)length=l;width=w;if(l=0|w=0)c
5、out<<" 矩阵行列不能为 0"<<endl; return ;else deletenum; num=NULL; num=new intlength*width; / 开辟 length*width 大小的空间 int *p=num; cout<<length<<"*"<<width<<" 矩阵 :"<<endl;for(int i=0;i<length;i+)cout<<" 请输入第 "<<i+1
6、<<" 行元素 :"<<endl;for(int j=0;j<width;j+)cout<<"第"<<j+1<<"列元素:"; cin>>*(p+i*width+j);说明:矩阵输入函数主要读进去需要进行计算的原始矩阵, 要注意的是矩阵的行列数不能 为 1 ,所以应该用选择语句排除一行一列的矩阵出现。首先用动态内存分配,给要 录入的矩阵开辟需要录入的空间 length*width 。然后运用循环语句,将矩阵的每个 元素录入。5、加运算符重载函数Matrix
7、Matrix:operator +(const Matrix &jz)实现:Matrix Matrix:operator +(const Matrix &jz)if(length=jz.length && width=jz.width)flag=1;int *n=new intlength*width; for(int i=0;i<length*width;i+)*(n+i)=*(num+i)+*(jz.num+i);Matrix temp(length,width,n); if(length*width>1) deleten;elsedelete
8、n;return temp;elseMatrix temp; flag=0; return temp;说明:加法运算符重载为类的成员函数,可以通过类的每个对象访问重载的运算符。 加法矩阵运算,要求两个矩阵的行列数分别相等。6、减法运算符重载函数 Matrix Matrix:operator -(const Matrix &jz) 实现:Matrix Matrix:operator -(const Matrix &jz)if(length=jz.length && width=jz.width)flag=1;int *n=new intlength*width;f
9、or(int i=0;i<length*width;i+)*(n+i)=*(num+i)-*(jz.num+i);Matrix temp(length,width,n);if(length*width=1)delete n;elsedelete n;return temp;elseflag=0;Matrix temp;return temp;说明:减法运算符重载为类的成员函数,可以通过类的每个对象访问重载的运算符。 减法矩阵运算,也要求两个矩阵的行列数分别相等。7、乘法运算符重载函数 Matrix Matrix:operator*(const Matrix &jz) 实现:Mat
10、rix Matrix:operator*(const Matrix &jz)if(width=jz.length)flag=1;int *n=new intlength*jz.width;int i=0;int j=0;int t=0; for(i=0;i<length;i+)for(j=0;j<jz.width;j+)*(n+i*jz.width+j)=0; for(i=0;i<length;i+) for(j=0;j<width;j+)for(t=0;t<jz.width;t+)*(n+i*jz.width+t)+=*(num+i*width+j)*(
11、jz.num+j*jz.width+t);Matrix temp(length,jz.width,n);if(length*jz.width=1)delete n;elsedelete n;return temp;elseflag=0;Matrix temp;return temp;说明: 矩阵乘法要求第一个矩阵的列数等于第二个矩阵的行数。8、赋值运算符重载函数 Matrix Matrix:operator=(const Matrix &jz实现:Matrix Matrix:operator =(const Matrix &jz)if(width*length=1) delet
12、e num;else delete num; flag=1;length=jz.length;width=jz.width;num=new intjz.length*jz.width; for(int i=0;i<length;i+)for (int j=0;j<width; j+) *(num+i*width+j)=*(jz.num+i*jz.width+j); return *this; 说明: 实际上为矩阵的简单拷贝。8、 转置函数 Matrix Matrix:zhuanzhi() 实现Matrix Matrix:zhuanzhi()flag=1;int *n=new int
13、length*width;for(int i=0;i<length;i+)for(int j=0;j<width;j+) *(n+j*length+i)=*(num+i*width+j);Matrix temp(width,length,n);if(length*width=1) delete n;elsedelete n;return temp;说明:实现矩阵的转置。9、显示结果函数 void Matrix:show()实现void Matrix:show()if(length*width!=0)for(int i=0;i<length*width;i+) cout.wid
14、th(5); cout<<*(num+i); if(i+1)%width=0) cout<<endl;说明:显示矩阵的各元素和格式。10、析构函数析构函数 Matrix:Matrix() 实现:Matrix:Matrix()if(length*width=1)delete num;elsedelete num;说明:通过析构函数删除所分配的内存。11 、提示输入矩阵行列数的函数void getmn(int &m,int &n)实现:void getmn(int &m,int &n)while(1)cout<<" 请输
15、入矩阵维数 :"<<endl;cout<<" 行数 :"cin>>m;cout<<" 列数 :"cin>>n;if(m>0&&n>0)return;说明: 用来提示用户输入矩阵的各元素。(2)主函数中的书写1、 主函数中首先用矩阵类Matrix定义要计算的矩阵对象,j1与 j2的运算结果是j3。2、运用 switch 语句实现一个选择菜单,按照菜单提示来选择相应要进行的运算功能。3、 在选择一个要进行的运算后,用getmn() 函数获取输入提示;再书写要进行
16、的功能运 算式,当静态函数 getflag()=1 时,说明可以进行运算;然后执行 if 条件句,分别输 出要进行运算矩阵j1和j2运算结果j3;当执行完switch语句一个选择分支功能后就 break 跳出该条件句。4、用 while 语句进行整个 switch 语句实现的菜单一个选择循环,当输入要运算功能的选 择字符时, while 语句执行。输入 Q 时退出矩阵计算器。四、调试与测试1、本程序中函数模块相对独立,可以进行单个运算符重载函数的书写极其测试,将每种 重载运算符函数写好,并且测试成功后再进行合并到一个类中,这样感觉会很清晰的 写完这个相比照较大的程序。2、给要计算的矩阵开辟空间
17、,最后一定要用析构函数进行空间的释放,要不程序再运行 几次后可能会因为内存缺乏而不能运行。五、源程序清单详见 请单击六、程序结果 以下通过截图显示清晰的矩阵简单的计算器功能。叽 dC:OocuBents and Settincs Adaini st rat o i桌面、课设AD dni吐矩库倚单的计算. 融頑丽爲|运运运唱J en加减乘赋转出 刪的囱囱的囱退 * HQ_hr-_hr-_hr-_hr-nT- Jp rr _Lk rLk -L. rkk ,-= FlA/ATJ-A/A7- A/ 3T*- fk/ Jc ( c -c c- X 口 g HF T q 一择n'乎 :F.E 办的
18、 -Ml-冒 的人:22J£ 7是 是罕 :2 5 2 8 7iI- nJ I I 府元元霁 眸 嗚B*请注卫串第加 肋,素 素元 元匸.:1:2fcu:3:5 :酎 阵管兀兀阵T元一于寿 元亍5 S<T -素-LS -I.continueT:I)Qt:urwiLt5 爼d 矗tti口护'股迎使用矩阵廿算器!i.¥Yr.sss-> 加减乘赋转岀 .HHHiDU PH ibpifeHH 1 1 Re -n 二 n 二 n =n!+! I-常 iinn r LEk - AT/ lTJ- J.- / / Jc rfx -f Jfs巳on运维 法悴 减矩的人:2
19、2素元LJ:s:4歼,:6 :掰lli討t: 阵唸兀元燼元 FT -/r I I : - I /Ttf u. Y x/y 1 Y. *数北输迈2?输1 ? 砸毒仃列£*请涓第 勰瞌豊娜列兀希3 忸2矩阵: 青输人第I行元素: 計列遵4 咅2列元豢2 _ 青献晟行元素: 豺列元素洱54被艇阵述是:4276口-話的结杲是二1 2-1 Ti 難totK 世-S3I ®®W®哲坦坦珅9W -|址世世世迪处S5fc* I ft I n III nil mi M口 I口屮 nQ 4 I*七丸*廿腰1 H 丰! 半二器二二二M二施Ah療聲§£LOJ -hK. r?*瞅iHi尺寸 E Lft |J LT> 9严IE曰民萝I冃曰屋世吴眞 哇鼠灵克皐忌克灵頭总屁 +r- TEE 4 tH Z MtH (+展教購也是:425456咖眸2是:? 8召 14?jl皿的结果是:G6 69I
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老人考试题及答案
- 心理学基础模拟练习题(含答案)
- 中级英语II知到智慧树答案
- 护理重点环节应急预案试题+答案
- 药店药品网络销售管理制度试题(含参考答案)
- 水利工程师-水利工程管理测试题(含参考答案)
- 运输车驾驶员安全教育培训考核试题及答案
- 2025城管执法服装定制化采购及质量监控制度合同
- 2025车展场地租赁合同范本-附带增值服务条款
- 2025年度速记服务保密协议及数据安全保护合同
- 塔吊拆除安全操作方案模板
- 虚拟健康咨询接受度分析-洞察及研究
- 多发性周围神经病护理查房
- 口腔医保政策解读
- 2025年河北省廊坊市三河市小升初数学试卷
- 2024浙江艺术职业学院单招《数学》模拟题库附答案详解(精练)
- 2025年高警示药品管理试题(附答案)
- 脑动脉瘤术后护理查房
- 消防法制业务培训课件
- 湖南省2024-2025学年高一下学期期末考试英语试题【含答案解析】
- 安徽省蚌埠市2024-2025学年七年级下学期期末考试英语试卷(含答案无听力原文及音频)
评论
0/150
提交评论