




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构课程设计五班级:06计本(1) 姓名:魏建平 学号:20060724035 题目: 严蔚敏习题实习4第1个:实现一个能进行基本稀疏矩阵运算的运算器一、 需求分析1、 本程序实现一个基本稀疏矩阵的简单运算,包括加、减、乘。2、 执行操作前应先创造要进行运算的两个矩阵,然后再选择进行相应的操作。3、 以三元组顺序表表示稀疏矩阵,实现二个矩阵相加,相减,相乘的运算;稀疏矩阵的输入形式为三元组表示,运算结果则为通常的阵列形式列出!4、 首先输入矩阵的行数和列数,并判别给出的两个矩阵和行、列数对于所要求作的运算是否相匹配。可设矩阵的行数和列数均不超过20;5、 程序先给出了菜单项,用户只需按照菜单提示进行相应的操作就行了。6、 测试数据:二、 概要设计1、 抽象数据类型三元组的定义如下:ADT Triple数据对象:D=ai| ai(-ElemSet,i=1,2,.,n,n=0;数据关系:R1=| ai-1,ai(- D,i=2,.,n基本操作:略2、基于三元组顺序表表示的矩阵操作: (1)创建三元组顺序表表示的矩阵:void createMatrix(TSMatrix &A) (2)初始化矩阵:void initMatrix(TSMatrix &A) (3)相加:void add(TSMatrix A,TSMatrix B,TSMatrix &C) (4)相减:void sub(TSMatrix A,TSMatrix &B,TSMatrix &C) (5)找m行n列元素在A中顺序表中的位置:int search(TSMatrix A,int m,int n) (6)相乘;void mult(TSMatrix A,TSMatrix B,TSMatrix &C) (7)输入以阵列形式表示的矩阵:void print(TSMatrix A) 3、主程序 Void main() While(true) 调用相应函数执行相应操作; 输出操作结果;4、本程序只有两个模块,调用关系简单:三、 详细设计1、 三元组结构描述:#define MAXSIZE 20using namespace std;typedef struct int row;int col;int e;Triple;typedef structTriple dateMAXSIZE;int m,n,len;TSMatrix;void initMatrix(TSMatrix &A)A.len=0;A.m=0;A.n=0;for(int i=0;iMAXSIZE;i+)A.datei.col=0;A.datei.e=0;A.datei.row=0;2、 各种操作函数源代码:void createMatrix(TSMatrix &A)initMatrix(A);cout创建矩阵:; coutA.mA.nA.len; for(int i=0;iA.len;i+) cout请输入第iA.datei.row; cinA.datei.col; cinA.datei.e; void add(TSMatrix A,TSMatrix B,TSMatrix &C)/相加if(A.m=B.m&A.n=B.n)int i=0,j=0;int k=0;C.m=A.m;C.n=A.n; while( iA.len|jB.len) if(i=A.len&jB.len) C.datek.col=B.datej.col; C.datek.row=B.datej.row; C.datek+.e=B.datej.e; C.len+; j+; else if(iB.datej.row) C.datek.col=B.datej.col; C.datek.row=B.datej.row; C.datek+.e=B.datej.e; C.len+; j+; else if(A.datei.rowB.datej.col) C.datek.col=B.datej.col; C.datek.row=B.datej.row; C.datek+.e=B.datej.e; C.len+; j+; else if(A.datei.colB.datej.col) C.datek.col=A.datei.col; C.datek.row=A.datei.row; C.datek+.e=A.datei.e; C.len+; i+; else cout不能相加!;void sub(TSMatrix A,TSMatrix &B,TSMatrix &C)/相减for(int k=0;kB.len;k+)B.datek.e=-B.datek.e;if(A.m=B.m&A.n=B.n)add(A,B,C);else cout不能相减!;for( k=0;kB.len;k+)B.datek.e=-B.datek.e;int search(TSMatrix A,int m,int n) int flag=-1; for(int i=0;iMAXSIZE;i+) if(A.datei.row=m&A.datei.col=n) flag=i; break; return flag;void mult(TSMatrix A,TSMatrix B,TSMatrix &C)/相乘int i=0,j=0;if(A.n=B.m)C.m=A.m;C.n=B.n;for(i=0;iA.len;i+)for(j=0;jB.len;j+) if(A.datei.col=B.datej.row)int flag=search(C,A.datei.row,B.datej.col);if(flag=-1) C.dateC.len.col=B.datej.col;C.dateC.len.row=A.datei.row; C.dateC.len+.e=A.datei.e*B.datej.e;elseC.dateflag.e=C.dateflag.e+A.datei.e*B.datej.e;elsecout不能相乘!endl;void print(TSMatrix A)int k=0;int i,j;int MMAXSIZEMAXSIZE;for(i=0;iA.m;i+)for(j=0;jA.n;j+)Mij=0;while(kA.len)MA.datek.row-1A.datek.col-1=A.datek.e;k+;for(i=0;iA.m;i+)cout| ;for(j=0;jA.n;j+)coutMij ;cout|endl;void showtip()cout-请选择要执行的操作-endl;coutendl;cout 0-创建矩阵endl;cout 1-A+Bendl;cout 2-A-Bendl;cout 3-A*Bendl;cout 4-退出endl;couti;while(true)switch(i)case 0:system(cls);cout创建矩阵A:endl; createMatrix(A); cout创建矩阵B:endl; createMatrix(B);showtip();break;case 1:system(cls);if(A.m=0|B.m=0)cout未建矩阵endl;elseinitMatrix(C);add(A,B,C);if(A.m=B.m&A.n=B.n)cout加的结果;endl;print(A);cout+endl;print(B);cout=endl;print(C);showtip();break;case 2:system(cls);if(A.m=0|B.m=0)cout未建矩阵endl;elseinitMatrix(C);sub(A,B,C);cout减的结果;endl;print(A);cout+endl;print(B);cout=endl;print(C);showtip();break;case 3:system(cls); if(A.m=0|B.m=0)cout未建矩阵endl;elseinitMatrix(C);mult(A,B,C);if(A.n=B.m)cout乘后的结果;endl;print(A); cout*endl; print(B); cout=i;四、 调试分析1、 由于本程序涉及的函数比较多,所以开始时在函数调用上出现了混乱,把自己都给搞糊涂了,后来经仔细排查,最终发现了错误。2、 一开始看这个题目时,感觉以前似乎做过,觉得很简单,所以没有进行认真分析就开始急着写程序,写
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度现代化厂房租赁及维护管理合同
- 二零二五年度IT企业总经理职位聘用书
- 二零二五年度财务顾问咨询与财务信息安全管理协议
- 二零二五年度安全生产标准化项目验收与评审合同
- 2025年新型绿色住宅租赁合同模板
- 商业培训中的个性化学习路径设计与教育心理学
- 探索奇妙影子世界-中班健康主题活动
- 如何做好生产管理
- 微创拔牙及牙槽外科护理技术规范
- 烧伤老年病人护理
- 垃圾处理焚烧培训课件
- 国家中小学智慧教育平台培训专题讲座
- GMP附录-细胞治疗产品
- 2025年中国烘焙食品行业发展深度分析及行业发展趋势报告
- 专业烧烤店管理制度
- GB/T 45668-2025地下空间信息系统建设技术要求
- DB32-T 4001-2025 公共机构能耗定额及计算方法
- 中医护理技术创新思维
- CJ/T 189-2007钢丝网骨架塑料(聚乙烯)复合管材及管件
- 外派干部考核管理制度
- 公司网络规划设计方案
评论
0/150
提交评论