数据结构课程设计稀疏矩阵运算器Word格式文档下载.docx
- 文档编号:14048433
- 上传时间:2022-10-17
- 格式:DOCX
- 页数:24
- 大小:53.80KB
数据结构课程设计稀疏矩阵运算器Word格式文档下载.docx
《数据结构课程设计稀疏矩阵运算器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计稀疏矩阵运算器Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。
相减运算与相加运算相同,同样取行、列下标相等的元素,相减后存入结果矩阵。
相乘运算要先判断两矩阵能否相乘。
若能相乘,则取行、列号相对应的元素进行相乘及相加,最后将对应元素存入结果矩阵中。
通过实验表明本程序能够进行稀疏矩阵的相加,相减,相乘运算。
具备矩阵的加、减、乘功能。
关键词:
相加运算器;
相减运算器;
相乘运算器
数据结构课程设计任务书
针对本课程设计,完成以下课程设计任务:
1、熟悉系统实现工具和上级环境。
2、根据课程设计任务,查阅相关资料。
3、针对所选课题完成以下工作:
(1)、需求分析
(2)、概要设计
(3)、详细设计
(4)、编写源程序
(5)、静态走查程序和上机调试程序
4、书写上述文档和撰写课程设计报告。
附录(程序清单)33
第一章问题描述
一、问题描述:
稀疏矩阵是指那些多数元素为零的矩阵,利用“稀疏”特点进行存储和计算可以大大节省存储空间,提高计算效率,实现一个能进行稀疏矩阵基本运算的运算器。
二、基本要求:
以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,实现两个矩阵相加、相减和相乘的运算。
稀疏矩阵的输入形式采用三元组表示,而运算结果的矩阵则以通常的阵列形式列出。
第二章需求分析
1、运算器程序以用户和计算机的对话方式执行,数组的建立方式为边输入边建立。
2、由题目要求可知:
首先应输入矩阵的行数、列数和非零个数,并判别给出的两个矩阵的行、列数对于所要求作的运算是否相匹配。
3、程序可以对三元组的输入顺序不加以限制;
根据对矩阵的行列,三元组作直接插入排序,从而进行运算时,不会产生错误。
4、在用三元组表示稀疏矩阵时,相加、相减和乘积所得结果矩阵应该另生成,为了算法方便,使用二维数组存放。
程序在VisualC++6.0环境下设计。
程序执行的命令为:
1.稀疏矩阵加法;
2.稀疏矩阵减法;
3.稀疏矩阵乘法;
第三章概要设计
1、三元组结构定义:
typedefstruct{//三元组结构
inti,j;
//矩阵行下标和列下标
inte;
//值
}triple;
2、稀疏矩阵结构定义:
typedefstruct//矩阵结构
{
tripledata[MAXSIZE+1];
intm,n,t;
//矩阵的行数、列数、非零元个数
}tripletable;
3、两个稀疏矩阵相加函数:
Add(tripletableM,tripletableT)
4、两个稀疏矩阵相减函数:
mut(tripletableM,tripletableT)
5、两个稀疏矩阵相乘函数:
mul(tripletableM,tripletableT)
6、主函数:
voidmain()
{初始化;
switch
{
接受命令;
选择处理命令;
}
}
7、本程序有四个模块,调用关系如下:
8、本程序的流程图:
第四章详细设计
4.1函数说明:
1、稀疏矩阵的三元组顺序表存储表示:
typedefstruct{//三元组结构
//行下标和列下标
//值
2、稀疏矩阵存储表示:
typedefstruct//矩阵结构
//矩阵的行数、列数、非零元个数
3、主要函数:
voidAdd();
voidcut();
voidmul();
intmain();
4.2算法分析:
设计一个矩阵类实现矩阵的运算:
classtripletable(包含矩阵的各种运算函数)。
输入矩阵(以三元组形式输入非零元),输出矩阵(阵列形式)。
tripletableM;
intm,n,t,i,j,e,k,c,d;
inta[MAXSIZE][MAXSIZE];
cout<
<
"
输入稀疏矩阵M的行数,列数和非零元个数:
;
cin>
>
M.m>
M.n>
M.t;
for(k=1;
k<
=M.t;
k++)
输入第"
个非零元素的行下标,列下标和值:
M.data[k].i>
M.data[k].j>
M.data[k].e;
a[M.data[k].i][M.data[k].j]=M.data[k].e;
矩阵M的行列形式为:
\n"
for(c=1;
c<
=M.m;
c++)
for(d=1;
d<
=M.n;
d++)
a[c][d]<
"
endl;
矩阵的加法:
voidAdd()//矩阵相加
tripletableT;
inta[MAXSIZE][MAXSIZE]={0};
//将二维数组初始化为零
intb[MAXSIZE][MAXSIZE]={0};
intf[MAXSIZE][MAXSIZE]={0};
输入稀疏矩阵T的行数,列数和非零元个数:
T.m>
T.n>
T.t;
if(M.m!
=T.m||M.n!
=T.n)//检验两矩阵能否相加
两矩阵行或列不相等,请重新进入系统输入!
return;
=T.t;
T.data[k].i>
T.data[k].j>
T.data[k].e;
矩阵T的行列形式为:
b[T.data[k].i][T.data[k].j]=T.data[k].e;
=T.m;
=T.n;
b[c][d]<
f[c][d]=a[c][d]+b[c][d];
//两矩阵行、列号相等的元素之和为结果矩阵对应元素
两矩阵相加后的行列形式为:
f[c][d]<
以上主要设计思想:
此功能由函数Add()实现,当用户选择该功能时系统即提示用户初始化要进行加法的两个矩阵的信息。
然后检测这两个矩阵是否符合矩阵相加的规则,如果符合,进行加法。
否则重新进入系统输入数据。
最后输出结果。
矩阵的减法:
voidcut()//矩阵相减
=T.n)//检验两矩阵能否进行减法运算
f[c][d]=a[c][d]-b[c][d];
//两矩阵行、列号相等的元素之差为结果矩阵对应元素
两矩阵相减后的行列形式为:
此功能由函数cut()实现,当用户选择该功能时系统即提示用户初始化要进行减法的两个矩阵的信息。
然后检测这两个矩阵是否符合矩阵相减的规则,如果符合,进行减法运算。
矩阵的乘法:
voidmul()//矩阵相乘
triplet
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 稀疏 矩阵 运算器