




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、更多课程设计、论文、毕业设计请访问:数据结构实验报告实验题目: 稀疏矩阵运算器问题描述:有输入界面(图形或文字界面都可),能区分加法和转置;能处理任意输入的典型数据和进行出错数据处理(例如加法,当第一个矩阵和第二个矩阵的行数和列数不相等时,不能运算);必须采用三元组作存储结构,不能采用数组等形式;输出要求用矩阵的形式输出(即习题集136页的形式)。实验目的:使用三元组实现稀疏矩阵的运算实验内容:写出程序并上机调试、通过。一、需求分析1、演示程序以用户和计算机的对话方式执行,即在计算机终端上显示*矩阵的加法和转制运算器*1、稀疏矩阵的加法2、稀疏矩阵的转置输入要进行的项目的编号: 时输入要进行的
2、运算对应的数字。当出现“请输入矩阵的行数、列数和非零元个数(以空格隔开):”时输入矩阵的行数、列数和非零元素个数。当出现“请用三元组形式输入矩阵的元素(行 列 非零元素):”时输入矩阵中的所有非零元素的位置和值,这时将出现由输入的因素所生成的矩阵a。若在输入项目标号时输入的是1,接着会出现“请输入矩阵的行数、列数和非零元个数(以空格隔开):”,这时输入另一个矩阵的行数、列数和非零元素个数。当出现“请用三元组形式输入矩阵的元素(行 列 非零元素):”时输入另一个矩阵中的所有非零元素的位置和值。这时将会生成矩阵b和矩阵a+b若在输入项目标号时输入的是2,在出现矩阵a后会出现a的转置矩阵。3、程序的
3、执行包括:(1)构造三元组顺序表存储非零元的位置和值;(2)输入要进行的项目的编号;(3)生成矩阵a;(4)输出矩阵a;(5)判断要进行的运算。若为1,生成矩阵b并输出矩阵b和矩阵a+b;若为2,输出矩阵;(6)销毁矩阵;(7)结束4、本实验做一个类似于运算器的程序,实现矩阵的转置和加法运算,5、输入及输出示例:*矩阵的加法和转制运算器*1、稀疏矩阵的加法2、稀疏矩阵的转置输入要进行的项目的编号: 1请输入矩阵的行数、列数和非零元个数(以空格隔开):5 5 2请用三元组形式输入矩阵的元素(行 列 非零元素):1 2 63 5 19矩阵a:0 6 0 0 00 0 0 0 00 0 0 0 19
4、0 0 0 0 00 0 0 0 0 请输入矩阵的行数、列数和非零元个数(以空格隔开):5 5 51 1 31 5 92 3 83 4 113 5 6 矩阵b:3 0 0 0 90 0 8 0 00 0 0 11 60 0 0 0 0 0 0 0 0 0 a+b:3 6 0 0 90 0 8 0 0 0 0 0 11 250 0 0 0 0 0 0 0 0 0二 概要设计1基本操作本程序中,用三元组顺序表作为存储结构。(1)、creat(tsmatrix &m)操作结果:创建矩阵m。(2)、addsmatrix(tsmatrix a,tsmatrix b,tsmatrix &c,int n)初
5、始条件:矩阵a和b的行数和列数对应相等。操作结果:求矩阵a、b的和c=a+b。(3)、transposesmarix(tsmatrix *a,tsmatrix *b)初始条件:矩阵a、b已存在且a指向矩阵a,b指向矩阵b。操作结果:将a指向的矩阵转置到b指向的矩阵。(4)、print_smatrix(tsmatrix m)初始条件:矩阵m已存在操作结果:输出矩阵m2、模块调用图主程序模块创建三元组顺序表模块创建矩阵模块矩阵运算模块输出链表模块销毁矩阵模块三 详细设计1、每个模块:(1) 创建用于存储的三元组顺序表#define maxsize 40 /假设非零元素个数的最大值为40 typed
6、ef int elemtype; typedef struct int i,j; /非零元的行下标和列下标 elemtype e; /非零元的值 triple; typedef struct triple datamaxsize+1; int rposmaxrc+1; /各行第一个非零元在三元组的位置表 int hs,ls,fls; tsmatrix,*matrix; (2)、创建矩阵void creat(tsmatrix &m) int i,k; for(i=1;i=maxrc+1;i+) m.rposi=0; printf(请输入矩阵的行数、列数和非零元个数(以空格隔开):); scanf
7、(%d %d %d,&m.hs,&m.ls,&m.fls);/将得到的m矩阵的性质保存printf(请用三元组形式输入矩阵的元素(行 列 非零元素):n); for(i=1;i=m.fls;i+)scanf(%d %d %d,&m.datai.i,&m.datai.j,&m.datai.e);/将m中的非零元素记录,生成矩阵 for(i=1,k=1;i=m.hs;i+) m.rposi=k; while(m.datak.i=i & k=m.fls)k+; (3)、矩阵的运算1)矩阵加法void addsmatrix(tsmatrix a,tsmatrix b,tsmatrix &c,int n
8、) int a,b,temp,l; c.hs=a.hs;c.ls=a.ls;a=b=l=1;while(a=a.fls & b=b.fls) if(a.dataa.i=b.datab.i) if(a.dataa.jb.datab.j)c.datal=b.datab; c.datal+.e=n*b.datab+.e;elsetemp=a.dataa.e+n*b.datab.e; if(temp)c.datal=a.dataa; c.datal.e=temp; l+; a+;b+; else if(a.dataa.ib.datab.i)c.datal+=a.dataa+; else c.datal
9、=b.datab; c.datal+.e=n*b.datab+.e; while(a=a.fls)c.datal+=a.dataa+; while(bhs=a-ls;b-ls=a-hs;b-fls=a-fls;if(b-fls)q=1;for(col=1;colls;col+) for(p=1;pfls;p+)if(a-datap.j=col)b-dataq.i=a-datap.j;b-dataq.j=a-datap.i;b-dataq.e=a-datap.e;+q;(4)、输出函数void print_smatrix(tsmatrix m) int k,l,n; matrix p; p=&m
10、; for(k=1,n=1;khs;k+) for(l=1;lls;l+) if(p-datan.i=k & p-datan.j=l) printf(%5d,p-datan.e); n+; else printf(%5d,0); printf(n); printf(n); (5)、销毁矩阵void destory_smatrix(tsmatrix &m) m.hs=m.ls=m.fls=0; (6)、主函数void main() tsmatrix a,b,c; tsmatrix *p=&a,*q=&b;int flag,n; printf(t *矩阵的加法和转制运算器* n);printf(t
11、 1、稀疏矩阵的加法 n);printf(t 2、稀疏矩阵的转置 n);printf(输入要进行的项目的编号:); scanf(%d,&flag); creat(a); printf(矩阵a:n); print_smatrix(a); switch(flag) case 1:creat(b);n=1;printf(矩阵b:n); print_smatrix(b); if(a.hs=b.hs & a.ls=b.ls) printf(a+b:n); addsmatrix(a,b,c,n);print_smatrix(c); else printf(错误!行列不一致n); break; case 2
12、: printf(a-b:n); transposesmarix(p,q); print_smatrix(b);break; default:printf(输入错误!n); destory_smatrix(a); destory_smatrix(b);destory_smatrix(c); 2、完整函数#include #include #include #define maxsize 40 /假设非零元素个数的最大值为40 #define maxrc 20/假设矩阵的最大行数为20 typedef int elemtype; typedef struct int i,j; /非零元的行下标和
13、列下标 elemtype e; /非零元的值 triple; typedef struct triple datamaxsize+1; int rposmaxrc+1; /各行第一个非零元在三元组的位置表 int hs,ls,fls; tsmatrix,*matrix; void creat(tsmatrix &m)/创建矩阵 int i,k; for(i=1;i=maxrc+1;i+) m.rposi=0; printf(请输入矩阵的行数、列数和非零元个数(以空格隔开):); scanf(%d %d %d,&m.hs,&m.ls,&m.fls);/将得到的m矩阵的性质保存printf(请用三
14、元组形式输入矩阵的元素(行 列 非零元素):n); for(i=1;i=m.fls;i+)scanf(%d %d %d,&m.datai.i,&m.datai.j,&m.datai.e);/将m中的非零元素记录,生成矩阵 for(i=1,k=1;i=m.hs;i+) m.rposi=k; while(m.datak.i=i & k=m.fls)k+; void addsmatrix(tsmatrix a,tsmatrix b,tsmatrix &c,int n)/矩阵相加 int a,b,temp,l; c.hs=a.hs;c.ls=a.ls;a=b=l=1;while(a=a.fls & b
15、=b.fls) if(a.dataa.i=b.datab.i) if(a.dataa.jb.datab.j)c.datal=b.datab; c.datal+.e=n*b.datab+.e;elsetemp=a.dataa.e+n*b.datab.e; if(temp)c.datal=a.dataa; c.datal.e=temp; l+; a+;b+; else if(a.dataa.ib.datab.i)c.datal+=a.dataa+; else c.datal=b.datab; c.datal+.e=n*b.datab+.e; while(a=a.fls)c.datal+=a.dat
16、aa+; while(bhs=a-ls;b-ls=a-hs;b-fls=a-fls;if(b-fls)q=1;for(col=1;colls;col+) for(p=1;pfls;p+)if(a-datap.j=col)b-dataq.i=a-datap.j;b-dataq.j=a-datap.i;b-dataq.e=a-datap.e;+q;void print_smatrix(tsmatrix m)/输出函数 int k,l,n; matrix p; p=&m; for(k=1,n=1;khs;k+) for(l=1;lls;l+) if(p-datan.i=k & p-datan.j=l
17、) printf(%5d,p-datan.e); n+; else printf(%5d,0); printf(n); printf(n); void destory_smatrix(tsmatrix &m)/销毁矩阵 m.hs=m.ls=m.fls=0; void main() tsmatrix a,b,c; tsmatrix *p=&a,*q=&b;int flag,n; printf(t *矩阵的加法和转制运算器* n);printf(t 1、稀疏矩阵的加法 n);printf(t 2、稀疏矩阵的转置 n);printf(输入要进行的项目的编号:); scanf(%d,&flag); creat(a); printf(矩阵a:n); print_smatrix(a); switch(flag) case 1:creat(b);n=1;printf(矩阵b:n); print_smatrix(b); if(a.hs=b.hs & a.ls
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年 南昌大学校内外招聘考试笔试试题附答案
- 2025年 河北软件职业技术学院选聘工作人员考试试题附答案
- 桑蚕丝定位男长巾项目投资可行性研究分析报告(2024-2030版)
- 2025年 安康市审计局事业单位招聘考试笔试试题附答案
- 2023-2028年中国河南白酒行业市场深度分析及投资策略咨询报告
- 2025年中国智慧商城建设市场前景预测及投资规划研究报告
- 2025年中国屏山炒青茶行业市场发展监测及投资战略规划报告
- 宝鸡醋项目可行性研究报告
- 中国电池制造行业全景评估及投资规划建议报告
- 销售顾问培训课件
- GB-T12232-2005- 通用阀门 法兰连接铁制闸阀
- 大学生职业生涯规划与就业指导教案第5讲:兴趣探索
- 2022年中国电信店长技能四级认证教材
- 门店电表记录表
- 七年级劳技 花卉种植 花卉用途 PPT学习教案
- 常见散料堆积密度汇总-共10
- 企业劳动用工法律风险与防范
- 海洋牧场生态融合渔光互补项目资金申请报告写作模板
- 国际金融托马斯普格尔复习资料整理
- 基于单片机的报警器与旋转灯设计(共21页)
- 中国农业银行房地产押品价值评估操作模板
评论
0/150
提交评论