欢迎来到天天文库
浏览记录
ID:47518076
大小:95.86 KB
页数:11页
时间:2020-01-12
《数据结构实验稀疏矩阵计算器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、‘实验报告题目:稀疏矩阵运算器班级:14电子商务平台建设班完成日期:2015.11.2学号:20141103468姓名:孙少辉学号:20141103421姓名:杨德龙学号:20141103407姓名:柴益新一:需求分析稀疏矩阵是指那些多数元素为零的矩阵。利用“稀疏“特点进行存储和计算可以大大节省存储空间,提高计算效率。实现一个能进行稀疏矩阵基本运算的运算器。【基本要求】以“带行逻辑链接信息“的三元组顺序表示稀疏矩阵,实现两个矩阵相加、相减和相乘运算。稀疏矩阵的输入采用三元组表示,而运算结果的矩阵则以通常阵列形式
2、列出。【项目约束】1.首先应输入矩阵的行数和列数,并判断给出的两个矩阵行、列数对于所要求作的运算是否相匹配。可设矩阵的行数和列数均不超过20。2.程序可以对三元组的输入顺序加以限制,例如,按行优先。注意研究教科书5.3.2节中的算法,以便提高计算效率。3.在用三元组稀疏矩阵时,相加或相减所得结果矩阵应该另生成,乘积矩阵也可用二维数组存放。三:详细设计1:数据结构的定义元素类型、变量、指针类型(1)项目数据表:3.2子函数函数名入口参数出口参数功能介绍main()定义二维数组及用到的各种变量3:函数调用关系无函数
3、调用关系,只有一个主函数四:调试分析三元组顺序的输入规则。以000作为输入的结束信号。完成实现稀疏矩阵的相加、相减、相乘的运算。五:用户使用说明(1)首先运行文件系统1.首先定义要运算的第一个稀疏矩阵的行列数定义完成之后输入另一个要运算的稀疏矩阵的行列。(1)输入信息:如下图所示输入两个矩阵的元素所有输入信息以及运算方法输入完成之后。回车直接算出结果(1)输出信息:六、源代码/*****项目名称:稀疏矩阵的运算***设计者:杨德龙,柴益新,孙少辉***时间:2015.11.02***实现目标:实现矩阵的加法,减
4、法,乘法;***/#include#includeintmain(){//定义二维数组及用到的各种变量inta[20][20];intb[20][20];intc[20][20];intm,n,k,l,i,j,p;intsum;into;chart;//输入操作printf("请输入第一个矩阵的行列");scanf("%d%d",&n,&m);//初始化a数组for(i=0;i5、个矩阵的行列");scanf("%d%d",&k,&l);//初始化b数组for(i=0;i6、rue){scanf("%d%d%d",&i,&j,&p);if(i==0&&j==0&&p==0)break;elseb[i-1][j-1]=p;}printf("请输入执行操作(+或-或*)");while(true){getchar();scanf("%c",&t);if(t=='+')//加法运算{if(n!=k7、8、m!=l){printf("不能进行该运算!!");exit(0);//结束}else{printf("答案为:");for(i=0;i9、){printf("%d",a[i][j]+b[i][j]);}printf("");}exit(0);//结束}}elseif(t=='-')//减法运算{if(n!=k10、11、m!=l){printf("不能进行该运算!!");exit(0);//结束}else{printf("答案为:");for(i=0;i12、/乘法运算{if(m!=k){printf("不能进行该运算!!");exit(0);//结束}else{printf("答案为:");for(o=0;o
5、个矩阵的行列");scanf("%d%d",&k,&l);//初始化b数组for(i=0;i6、rue){scanf("%d%d%d",&i,&j,&p);if(i==0&&j==0&&p==0)break;elseb[i-1][j-1]=p;}printf("请输入执行操作(+或-或*)");while(true){getchar();scanf("%c",&t);if(t=='+')//加法运算{if(n!=k7、8、m!=l){printf("不能进行该运算!!");exit(0);//结束}else{printf("答案为:");for(i=0;i9、){printf("%d",a[i][j]+b[i][j]);}printf("");}exit(0);//结束}}elseif(t=='-')//减法运算{if(n!=k10、11、m!=l){printf("不能进行该运算!!");exit(0);//结束}else{printf("答案为:");for(i=0;i12、/乘法运算{if(m!=k){printf("不能进行该运算!!");exit(0);//结束}else{printf("答案为:");for(o=0;o
6、rue){scanf("%d%d%d",&i,&j,&p);if(i==0&&j==0&&p==0)break;elseb[i-1][j-1]=p;}printf("请输入执行操作(+或-或*)");while(true){getchar();scanf("%c",&t);if(t=='+')//加法运算{if(n!=k
7、
8、m!=l){printf("不能进行该运算!!");exit(0);//结束}else{printf("答案为:");for(i=0;i9、){printf("%d",a[i][j]+b[i][j]);}printf("");}exit(0);//结束}}elseif(t=='-')//减法运算{if(n!=k10、11、m!=l){printf("不能进行该运算!!");exit(0);//结束}else{printf("答案为:");for(i=0;i12、/乘法运算{if(m!=k){printf("不能进行该运算!!");exit(0);//结束}else{printf("答案为:");for(o=0;o
9、){printf("%d",a[i][j]+b[i][j]);}printf("");}exit(0);//结束}}elseif(t=='-')//减法运算{if(n!=k
10、
11、m!=l){printf("不能进行该运算!!");exit(0);//结束}else{printf("答案为:");for(i=0;i12、/乘法运算{if(m!=k){printf("不能进行该运算!!");exit(0);//结束}else{printf("答案为:");for(o=0;o
12、/乘法运算{if(m!=k){printf("不能进行该运算!!");exit(0);//结束}else{printf("答案为:");for(o=0;o
此文档下载收益归作者所有