数据结构实验稀疏矩阵计算器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
‘
实验报告
题目:稀疏矩阵运算器
班级:14电子商务平台建设班完成日期:2015.11.2 学号:姓名:孙少辉
学号:姓名:杨德龙
学号:姓名:柴益新
一:需求分析
稀疏矩阵是指那些多数元素为零的矩阵。利用“稀疏“特点进行存储和计算可以大大节省存储空间,提高计算效率。实现一个能进行稀疏矩阵基本运算的运算器。
【基本要求】
以“带行逻辑链接信息“的三元组顺序表示稀疏矩阵,实现两个矩阵相加、相减和相乘运算。稀疏矩阵的输入采用三元组表示,而运算结果的矩阵则以通常阵列形式列出。
【项目约束】
1.首先应输入矩阵的行数和列数,并判断给出的两个矩阵
行、列数对于所要求作的运算是否相匹配。可设矩阵的行数和
列数均不超过20。
2.程序可以对三元组的输入顺序加以限制,例如,按行优
先。注意研究教科书5.3.2节中的算法,以便提高计算效率。
3.在用三元组稀疏矩阵时,相加或相减所得结果矩阵应该另生
成,乘积矩阵也可用二维数组存放。
三:详细设计
1:数据结构的定义
元素类型、变量、指针类型
(1)项目数据表:
3.2子函数
3:函数调用关系
无函数调用关系,只有一个主函数
四:调试分析
三元组顺序的输入规则。以0 0 0 作为输入的结束信号。完成实现稀疏矩阵的相加、相减、相乘的运算。
五:用户使用说明
(1)首先运行文件系统
1.首先定义要运算的第一个稀疏矩阵的行列数
定义完成之后输入另一个要运算的稀疏矩阵的行列。
(2)输入信息:
如下图所示输入两个矩阵的元素
所有输入信息以及运算方法输入完成之后。回车直接算出结果(3)输出信息:
六、源代码
/**
***项目名称:稀疏矩阵的运算
***设计者:杨德龙,柴益新,孙少辉
***时间:2015.11.02
***实现目标:实现矩阵的加法,减法,乘法;***/
#include
#include
int main()
{
//定义二维数组及用到的各种变量
int a[20][20];
int b[20][20];
int c[20][20];
int m,n,k,l,i,j,p;
int sum;
int o;
char t;
//输入操作
printf("请输入第一个矩阵的行列\n");
scanf("%d%d",&n,&m); //初始化a数组
for(i=0;i for(j=0;j a[i][j]=0; printf("请输入第二个矩阵的行列\n"); scanf("%d%d",&k,&l); //初始化b数组 for(i=0;i for(j=0;j b[i][j]=0; printf("请用三元组的方式输入第一个矩阵(例1 1 1)(输入0 0 0时结束)\n"); while(true) { scanf("%d%d%d",&i,&j,&p); if(i==0 && j==0 && p==0) break; else a[i-1][j-1]=p; } printf("请用三元组的方式输入第二个矩阵(例1 1 1)(输入0 0 0时结束)\n"); while(true) { scanf("%d%d%d",&i,&j,&p); if(i==0 && j==0 && p==0) break; else b[i-1][j-1]=p; } printf("请输入执行操作(+或-或*)\n"); while(true) { getchar(); scanf("%c",&t); if(t=='+') //加法运算 { { printf("不能进行该运算!!"); exit(0); //结束 } else { printf("答案为:\n"); for(i=0;i { for(j=0;j { printf("%d ",a[i][j]+b[i][j]); } printf("\n"); } exit(0); //结束 } } else if(t=='-') //减法运算 { { printf("不能进行该运算!!"); exit(0); //结束 } else { printf("答案为:\n"); for(i=0;i { for(j=0;j { printf("%d ",a[i][j]-b[i][j]); } printf("\n"); } exit(0); //结束 } } else if(t=='*') //乘法运算 { if(m!=k)