数据结构实验稀疏矩阵计算器Word格式文档下载.docx
《数据结构实验稀疏矩阵计算器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构实验稀疏矩阵计算器Word格式文档下载.docx(9页珍藏版)》请在冰豆网上搜索。
利用“稀疏“特点进行存储和计算可以大大节省存储空间,提高计算效率。
实现一个能进行稀疏矩阵基本运算的运算器。
【基本要求】
以“带行逻辑链接信息“的三元组顺序表示稀疏矩阵,实现两个矩阵相加、相减和相乘运算。
稀疏矩阵的输入采用三元组表示,而运算结果的矩阵则以通常阵列形式列出。
【项目约束】
1.首先应输入矩阵的行数和列数,并判断给出的两个矩阵
行、列数对于所要求作的运算是否相匹配。
可设矩阵的行数和列数均不超过20。
2.程序可以对三元组的输入顺序加以限制,例如,按行优
先。
注意研究教科书5.3.2节中的算法,以便提高计算效率。
3.在用三元组稀疏矩阵时,相加或相减所得结果矩阵应该另生成,乘积矩阵也可用二维数组存放。
三:
详细设计
1:
数据结构的定义
元素类型、变量、指针类型
(1)项目数据表:
3.2子函数
函数名
入口参数
出口参数
功能介绍
main()
定义二维数组及用到的各种变量
3:
函数调用关系
无函数调用关系,只有一个主函数
四:
调试分析
三元组顺序的输入规则。
以000作为输入的结束信号。
完成实现稀疏矩阵的相加、相减、相乘的运算。
五:
用户使用说明
(1)首先运行文件系统
1.首先定义要运算的第一个稀疏矩阵的行列数
定义完成之后输入另一个要运算的稀疏矩阵的行列。
(2)输入信息:
如下图所示输入两个矩阵的元素
所有输入信息以及运算方法输入完成之后。
回车直接算出结果
(3)输出信息:
六、源代码
/**
***项目名称:
稀疏矩阵的运算
***设计者:
杨德龙,柴益新,孙少辉
***时间:
2015.11.02
***实现目标:
实现矩阵的加法,减法,乘法;
***/
#include<
stdio.h>
windows.h>
intmain()
{
//定义二维数组及用到的各种变量
inta[20][20];
intb[20][20];
intc[20][20];
intm,n,k,l,i,j,p;
intsum;
into;
chart;
//输入操作
printf("
请输入第一个矩阵的行列\n"
);
scanf("
%d%d"
&
n,&
m);
//初始化a数组
for(i=0;
i<
n;
i++)
for(j=0;
j<
m;
j++)
a[i][j]=0;
请输入第二个矩阵的行列\n"
k,&
l);
//初始化b数组
b[i][j]=0;
请用三元组的方式输入第一个矩阵(例111)(输入000时结束)\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;
}
请用三元组的方式输入第二个矩阵(例111)(输入000时结束)\n"
b[i-1][j-1]=p;
请输入执行操作(+或-或*)\n"
{
getchar();
%c"
t);
if(t=='
+'
)//加法运算
{
if(n!
=k||m!
=l)
{
printf("
不能进行该运算!
!
"
exit(0);
//结束
}
else
答案为:
\n"
for(i=0;
{
for(j=0;
{
printf("
%d"
a[i][j]+b[i][j]);
}
printf("
}
}
elseif(t=='
-'
)//减法运算
a[i][j]-b[i][j]);
*'
)//乘法运算
if(m!
=k)
for(o=0;
o<
o++)
for(i=0;
l;
sum=0;
for(j=0;
{
sum=sum+a[o][j]*b[j][i];
}
sum);
printf("
输入符号错误,重新输入:
return0;
}