2022年2022年矩阵运算数值转换 .pdf

上传人:C****o 文档编号:33380936 上传时间:2022-08-10 格式:PDF 页数:27 大小:1.46MB
返回 下载 相关 举报
2022年2022年矩阵运算数值转换 .pdf_第1页
第1页 / 共27页
2022年2022年矩阵运算数值转换 .pdf_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《2022年2022年矩阵运算数值转换 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年矩阵运算数值转换 .pdf(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、南京邮电大学通达学院程序设计 (上机)报告题目:R018M P007M 专业市场营销(物流管理)学生姓名班级学号指导教师日期2010.6.14 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 27 页 - - - - - - - - - 评分细则评分项优秀良好中等及格不及格遵守机房规章制度上机表现学习态度基础知识水平程序设计能力课题功能实现情况算法设计合理性用户界面友好性报告书写认真程度报告内容完整性文字表达清楚程度问题回答准确性评分等级教师签名:年月日备注注:评分等级分

2、为五种:优秀、良好、中等、及格、不及名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 27 页 - - - - - - - - - 矩阵运算程序设计报告一、问题描述设计一个支持矩阵加减乘运算的程序二课题分析本题要求设计一个支持矩阵加减乘运算的程序,简单的功能框图如下:根据上图显示的功能要求, 可以将问题转化为设计一个具有三个主要功能模块(矩阵相加、矩阵相减、矩阵相乘)的矩阵运算系统。同时,为了配合矩阵运算的需要, 该矩阵运算系统必须包含输入和输出矩阵的功能。为简化运算量,

3、这里,只考虑任意两个矩阵相加、 相减和相乘的问题, 三个或三个以上矩阵的运算并不执行。程序运行后,计划达到的目标如下:(1)提供可操作的主菜单:程序运行时,首先输出菜单,用于显示若干个可选的功能选项。根据用户输入的选项来运行不同的功能,运行不同的函数。(2)输入信息:根据不同用户的需要,输入参与运算的矩阵,系统临时保存。(3)输出信息:将运算结果以矩阵的格式显现出来。(4)矩阵相加:任意输入两个矩阵,如果满足相加条件,界面输出相加结果。如果不满足相加条件,输出“矩阵不匹配”的提示,请用户重新操作。(5)矩阵相减:任意输入两个矩阵,如果满足相加条件,界面输出相减结果。如果不满足相减条件,输出“矩

4、阵不匹配”的提示,请用户重新操作。(6)矩阵相乘:任意输入两个矩阵,如果满足相乘条件,界面输出相乘结果。如果不满足相乘条件,输出“矩阵不匹配”的提示,请用户重新操作。矩阵运算矩阵相加矩阵相减矩阵相乘输入矩阵输出矩阵名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 27 页 - - - - - - - - - 三数据结构的设计class Str private: int m,n;/表示矩阵的行数和列数 double s100100;/双精度,定义二维数组存储矩阵public:

5、 int getm(); int getn();/调用私有数据 void input();/输入矩阵函数 void output();/输出矩阵函数 friend Str operator+(Str A,Str B); friend Str operator-(Str A,Str B); friend Str operator*(Str A,Str B);/运算符的重载; 矩阵类的各个主要部分具体设计方案如下:(1)矩阵相加:首先判断要进行相加的两个矩阵是否匹配,即行数和列数是否相等,如果相等,则将两个矩阵类中对应位置的数组元素相加,结果保存到另一个矩阵类的数组中。(2)矩阵相减:首先判断要进

6、行相减的两个矩阵是否匹配,即行数和列数是否相等,如果相等,则将两个矩阵类中对应位置的数组元素相减,结果保存到另一个矩阵类的数组中。(3)矩阵相乘:首先判断要进行相乘的两个矩阵是否匹配,即第一个矩阵的列数和第二个矩阵的行数是否相等,如果相等,根据矩阵相乘的定义,将两个矩阵类中对应位置的数组元素相乘后叠加,结果保存到另一个矩阵类的数组中。为了使程序简洁明了,矩阵相加、相减和相乘函数均使用两个参数,用来表示参与运算的两个矩阵。同时,创建友元运算符函数operator()来实现“+” 、“- ”和“ *”的重载,使其可以自由访问私有数据。矩阵的匹配判断程序设计在主函数中,而不出现在矩阵相加、相减和相乘

7、函数中。主函数的设计:(1) 显示欢迎界面和选择菜单。(2) 使用switch()函数,使用户能够自由选择需要的运算。(3) 如果用户选择的选项不在菜单中,提示输入错误, 并支持用户重新输入。可以用 default语句及循环实现。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 27 页 - - - - - - - - - (4) 在执行某一选定的操作中,先调用类函数 input ()来输入进行运算的矩阵,然后进行矩阵是否匹配的判断。如果矩阵不匹配,马上终止运算并提示用户。

8、如果矩阵匹配,则调用相应的重载运算符函数进行运算,并将运算结果用 output ()函数输出。(5) 利用while(i)不断循环,支持用户连续运算,仅当用户选择退出时,才退出操作系统。四处理结构的设计(1) 矩阵相加(减)函数矩阵相减函数的流程图与之类似。开始i=0 iA.m? J=0 jA.n? C.sij=A.sij+B.sijj=j+1 i=i+1 C.m=A.m, C.n=A.n 返回 C 结束N Y Y N 对矩阵相减函数,此处换为相减后赋值。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -

9、- - - - 第 5 页,共 27 页 - - - - - - - - - (2)矩阵相乘函数开始i=0 iA.m? j=0 jB.n? C.sij=0,k=0 j=j+1 i=i+1 C.sij=C.sij+A.sik*B.skj 返回 C 结束N Y Y N kA.n? k=k+1 C.m=A.m,C.n=B.n N Y 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 27 页 - - - - - - - - - 五 源程序#include using namesp

10、ace std; class Str private: int m,n;/表示矩阵的行数和列数double s100100;/定义二维数组存储矩阵public: int getm(); int getn(); void input(); void output(); friend Str operator+(Str A,Str B); friend Str operator-(Str A,Str B); friend Str operator*(Str A,Str B);/运算符的重载; Str operator+(Str A,Str B)/矩阵相加函数 Str C; int i,j; for

11、(i=0;iA.m;i+)/ 循环结构for(j=0;jA.n;j+) C.sij=A.sij+B.sij; C.m=A.m;C.n=A.n; return C; Str operator-(Str A,Str B)/ 矩阵相减函数 Str C; int i,j; for(i=0;iA.m;i+) for(j=0;jA.n;j+) C.sij=A.sij-B.sij; C.m=A.m;C.n=A.n; return C; Str operator*(Str A,Str B)/矩阵相乘函数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -

12、 - 名师精心整理 - - - - - - - 第 7 页,共 27 页 - - - - - - - - - Str C; int i,j,k; for(i=0;iA.m;i+) for(j=0;jB.n;j+) C.sij=0; for(k=0;kA.n;k+) C.sij=C.sij+A.sik*B.skj; C.m=A.m;C.n=B.n; return C; void Str:input()/矩阵输入函数 int i,j; do cout请输入矩阵的行数、列数:mn;while(m100|n100);/保证输入矩阵的行数和列数有效cout请输入矩阵 :endl; for(i=0;i m

13、;i+) for(j=0;j sij; void Str:output()/矩阵输出函数 int i,j; cout得到的矩阵是: endl; for(i=0;im;i+) for(j=0;jn;j+) cout sij ; cout endl; int Str:getm() return m; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 27 页 - - - - - - - - - int Str:getn() return n; void menu() cout1

14、、矩阵相加运算 endl; cout2、矩阵相减运算 endl; cout3、矩阵相乘运算 endl; cout4、退出运算系统 endl; int main() int choice,i=1; Str A,B,C; cout*09005307 宋丹丹设计 *endl; coutendl; coutendl; cout 欢迎使用矩阵运算系统endl; coutendl; coutendl; menu(); while(i)/ 循环结构,使完成运算后自动进行下一次运算 cout请选择: choice; switch(choice) case 1:cout 矩阵 A:endl; A.input()

15、; cout矩阵 B:endl; B.input(); if(A.getm()=B.getm()&A.getn()=B.getn()/ 判断是否符合运算条件 C=A+B; C.output(); else cout矩阵不匹配! nn; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 27 页 - - - - - - - - - menu();/回到菜单,进行下一次运算break;/使用 break 语句,跳入下一个循环case 2:cout 矩阵 A:endl; A.in

16、put(); cout矩阵 B:endl; B.input(); if(A.getm()=B.getm()&A.getn()=B.getn() C=A-B; C.output(); else cout矩阵不匹配! nn; menu(); break; case 3:cout 矩阵 A:endl; A.input(); cout矩阵 B:endl; B.input(); if(A.getn()=B.getm() C=A*B; C.output(); else cout矩阵不匹配! nn; menu(); break; case 4: cout*谢谢使用! *nnn; cout谢谢 老师的辛勤教导

17、我会继续 努力! nnn; i=0;/使其不符合循环条件,跳出循环break; default: coutError Input!=0) printf(%c,bi); i-;/从后向前依次输出 while(temp&i16) int x=temp%16; if(x10) hi=x+0; else hi=x-10+A;/前十个为数字,后六个为字母 temp/=16; i+; int m=1; while(m) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 27 页 -

18、- - - - - - - - , scanf(%d,&m); switch(m) case 1:continue; case 0:printf(*谢谢使用本系统*); While 循环的设计可有效提高系统的方便性和实用性。四处理结构的设计主函数开始输入待转换数进行数制转换运算输出转换后的数结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 27 页 - - - - - - - - - 二进制转换部分函数八进制与之类似开始temp=a;i=0 temp!=0&i64?是

19、bi=temp%2+ 0temp/=2;i+ 否结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 27 页 - - - - - - - - - 十六进制转换部分函数开始temp=a;i=0 temp!=0&i64 ? 是bi=temp%2+ 0temp/=2;i+ 否结束i10? bi=temp%2+ 0是否名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2

20、0 页,共 27 页 - - - - - - - - - 输出部分函数五源程序#include int main() unsigned long a,temp;/定义无符号长整型 char b64; char o21; char h16;/无符号长整型数的取值范围 int i,m=1; 输出 bi 开始i- i=0 结束是否名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 27 页 - - - - - - - - - printf(*09005307 宋丹丹设计 *nnn

21、); while(m) printf(Input number:); scanf(%ld,&a); temp=a; i=0; while(temp&i=0) printf(%c,bi); i-;/从后向前依次输出 printf(n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 27 页 - - - - - - - - - temp=a; i=0; while(temp&i=0) printf(%c,oi); i-; printf(n); temp=a; i=0;

22、while(temp&i16) int x=temp%16; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 27 页 - - - - - - - - - if(x=0&i16) printf(%c,hi); i-; printf(nnn); do printf(1、继续 n0、退出 n 请选择: n); scanf(%d,&m); while(m1); switch(m) case 1:continue; case 0:printf(*谢 谢 使用 本 系 统*);

23、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 27 页 - - - - - - - - - printf(nnn); printf(*谢谢老师的辛勤教导我会继续努力! *nnn); return 0; 六调试记录程序运行后,输出界面:*09005307 宋丹丹设计 * Input number: 第一次输入: 65 输出:二进制: 1000001 八进制: 101 十六进制 : 41 1、继续0、退出输入:1 输出:Input number: 名师资料总结 - - -

24、精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 25 页,共 27 页 - - - - - - - - - 第二次输入: 165 输出:二进制: 10100101 八进制: 245 十六进制 : A5 1、继续0、退出输入:0 输出:*谢谢使用本系统 * 七相关界面名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 26 页,共 27 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 27 页,共 27 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁