




已阅读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嘉兴人才公寓建设开发有限公司招聘2人考前自测高频考点模拟试题及答案详解(名校卷)
- 2025福建石狮农商银行春季招聘8人模拟试卷及参考答案详解1套
- 2025安徽宣城市旌德县兴业融资担保有限公司招聘3人考前自测高频考点模拟试题及答案详解(名校卷)
- 2025广东广州市中山大学孙逸仙纪念医院全科医学科医教研岗位招聘1人考前自测高频考点模拟试题附答案详解(典型题)
- 2025贵州医科大学附属口腔医院引进高层次人才考前自测高频考点模拟试题及参考答案详解
- 2025年泽库县审计局面向社会公开招聘编制外辅助审计人员考前自测高频考点模拟试题及答案详解参考
- 2025年齐齐哈尔讷河市发展和改革局所属事业单位公开选调工作人员9人模拟试卷及完整答案详解1套
- 2025湖南省中南大学非事业编工作人员招聘考前自测高频考点模拟试题及答案详解1套
- 2025广西百色市那坡县百南乡招聘村级防贫监测员1人考前自测高频考点模拟试题附答案详解(完整版)
- 2025河南许昌市公安局招聘看护队员230人模拟试卷带答案详解
- 下浮率合同协议
- API SPEC 7-1-2023 旋转钻柱构件规范
- 2025年自考《艺术概论》考试复习题库(含答案)
- 人工智能深度学习概念与应用测试卷
- 小学道德与法治理论培训
- GB/T 12643-2025机器人词汇
- 《酒店服务礼仪培训》课件
- 挤出机生产线安全操作规程
- 药品采购与供应链管理
- 函数与基本初等函数 章节总结(解析版)-2025年高考数学一轮复习(新高考专用)
- 麻醉科2025年发展计划
评论
0/150
提交评论