数据结构实验稀疏矩阵计算器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

相关文档
最新文档