数据结构教学规划(稀疏矩阵运算器).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据结构教学规划(稀疏矩阵运算器).doc》由会员分享,可在线阅读,更多相关《数据结构教学规划(稀疏矩阵运算器).doc(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、,*大学数据结构课程设计说明书题 目:稀疏矩阵运算器学生姓名:学 号:专 业:班 级:指导教师: 2013 年 7 月 24日稀疏矩阵运算器摘 要 摘要:设计一稀疏矩阵运算器。实现两个矩阵的相加、相减和相乘的功能。用“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,实现两个矩阵相加、相减和相乘的运算,采用分级的设计方法,分别设计出加、减、乘运算器的子程序,相加运算时只要依次存储、扫描两矩阵的行、列数,若行、列数相等,再取行、列下标相等的元素,相加后存入结果矩阵。相减运算与相加运算相同,同样取行、列下标相等的元素,相减后存入结果矩阵。相乘运算要先判断两矩阵能否相乘。若能相乘,则取行、列号相对应的元
2、素进行相乘及相加,最后将对应元素存入结果矩阵中。通过实验表明本程序能够进行稀疏矩阵的相加,相减,相乘运算。具备矩阵的加、减、乘功能。关键词:相加运算器;相减运算器;相乘运算器 数据结构课程设计任务书针对本课程设计,完成以下课程设计任务:1、 熟悉系统实现工具和上级环境。2、 根据课程设计任务,查阅相关资料。3、 针对所选课题完成以下工作:(1)、需求分析(2)、概要设计(3)、详细设计(4)、编写源程序(5)、静态走查程序和上机调试程序4、书写上述文档和撰写课程设计报告。目 录稀疏矩阵运算器I摘 要II课程设计任务书III课程设计正文第一章 问题描述5第二章 需求分析6第三章 概要设计9第四章
3、 详细设计19 4.1 函数说明10 4.2 算法分析19第五章 调试分析21第六章 测试结果23第七章 课程设计总结24参考文献24附录(程序清单)33第一章 问题描述一、问题描述:稀疏矩阵是指那些多数元素为零的矩阵,利用“稀疏”特点进行存储和计算可以大大节省存储空间,提高计算效率,实现一个能进行稀疏矩阵基本运算的运算器。二、基本要求:以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,实现两个矩阵相加、相减和相乘的运算。稀疏矩阵的输入形式采用三元组表示,而运算结果的矩阵则以通常的阵列形式列出。第二章 需求分析1、运算器程序以用户和计算机的对话方式执行,数组的建立方式为边输入边建立。2、由题目
4、要求可知:首先应输入矩阵的行数、列数和非零个数,并判别给出的两个矩阵的行、列数对于所要求作的运算是否相匹配。3、程序可以对三元组的输入顺序不加以限制;根据对矩阵的行列,三元组作直接插入排序,从而进行运算时,不会产生错误。4、在用三元组表示稀疏矩阵时,相加、相减和乘积所得结果矩阵应该另生成,为了算法方便,使用二维数组存放。程序在Visual C+ 6.0环境下设计。程序执行的命令为:1.稀疏矩阵加法; 2.稀疏矩阵减法; 3.稀疏矩阵乘法; 第三章 概要设计1、三元组结构定义:typedef struct /三元组结构 int i,j; /矩阵行下标和列下标 int e; /值triple;2、
5、稀疏矩阵结构定义:typedef struct/矩阵结构triple dataMAXSIZE+1; int m,n,t; /矩阵的行数、列数、非零元个数tripletable;3、两个稀疏矩阵相加函数:Add (tripletable M,tripletable T)4、两个稀疏矩阵相减函数:mut (tripletable M,tripletable T)5、两个稀疏矩阵相乘函数:mul (tripletable M,tripletable T)6、主函数:void main( )初始化;switch 接受命令;选择处理命令; 7、本程序有四个模块,调用关系如下:主程序模块矩阵输入模块 矩阵
6、运算模块矩阵输出模块8、本程序的流程图:开始选择要执行的操作作选择3,进行矩阵乘法运算选择1,进行矩阵加法运算 选择2,进行矩阵减法运算输入n个矩阵A的行数、列数、非零元个数输出结果结束第四章 详细设计4.1 函数说明:1、稀疏矩阵的三元组顺序表存储表示:typedef struct /三元组结构 int i,j; /行下标和列下标 int e; /值triple;2、稀疏矩阵存储表示:typedef struct/ /矩阵结构triple dataMAXSIZE+1; int m,n,t; /矩阵的行数、列数、非零元个数tripletable;3、 主要函数:void Add( ) ;voi
7、d cut ( ); void mul( );int main( );4.2 算法分析:设计一个矩阵类实现矩阵的运算:class tripletable(包含矩阵的各种运算函数)。输入矩阵(以三元组形式输入非零元),输出矩阵(阵列形式)。tripletable M;int m,n,t,i,j,e,k,c,d; int aMAXSIZEMAXSIZE; coutM.mM.nM.t;for(k=1;k=M.t;k+)cout输入第kM.datak.iM.datak.jM.datak.e;for(k=1;k=M.t;k+)aM.datak.iM.datak.j=M.datak.e;cout矩阵M的行
8、列形式为:n;for(c=1;c=M.m;c+)for(d=1;d=M.n;d+)coutacd ;coutendl;矩阵的加法:void Add()/矩阵相加tripletable M;tripletable T;int m,n,t,i,j,e,k,c,d; int aMAXSIZEMAXSIZE=0; /将二维数组初始化为零int bMAXSIZEMAXSIZE=0;int fMAXSIZEMAXSIZE=0;coutM.mM.nM.t;for(k=1;k=M.t;k+)cout输入第kM.datak.iM.datak.jM.datak.e;cout矩阵M的行列形式为:n;for(k=1;
9、k=M.t;k+)aM.datak.iM.datak.j=M.datak.e;for(c=1;c=M.m;c+)for(d=1;d=M.n;d+)coutacd ;coutendl;coutT.mT.nT.t;if(M.m!=T.m|M.n!=T.n) /检验两矩阵能否相加cout两矩阵行或列不相等,请重新进入系统输入!n; return ;for(k=1;k=T.t;k+)cout输入第kT.datak.iT.datak.jT.datak.e;cout矩阵T的行列形式为:n;for(k=1;k=T.t;k+)bT.datak.iT.datak.j=T.datak.e;for(c=1;c=T.
10、m;c+)for(d=1;d=T.n;d+)coutbcd ;coutendl;for(c=1;c=M.m;c+)for(d=1;d=M.n;d+)fcd=acd+bcd; /两矩阵行、列号相等的元素之和为结果矩阵对应元素cout两矩阵相加后的行列形式为:endl;for(c=1;c=M.m;c+)for(d=1;d=M.n;d+)coutfcd ;coutendl;以上主要设计思想:此功能由函数Add( )实现,当用户选择该功能时系统即提示用户初始化要进行加法的两个矩阵的信息。然后检测这两个矩阵是否符合矩阵相加的规则,如果符合,进行加法。否则重新进入系统输入数据。最后输出结果。矩阵的减法:v
11、oid cut()/矩阵相减tripletable M;tripletable T;int m,n,t,i,j,e,k,c,d; int aMAXSIZEMAXSIZE=0;int bMAXSIZEMAXSIZE=0;int fMAXSIZEMAXSIZE=0;coutM.mM.nM.t;for(k=1;k=M.t;k+)cout输入第kM.datak.iM.datak.jM.datak.e;cout矩阵M的行列形式为:n;for(k=1;k=M.t;k+)aM.datak.iM.datak.j=M.datak.e;for(c=1;c=M.m;c+)for(d=1;d=M.n;d+)couta
12、cd ;coutendl;coutT.mT.nT.t;if(M.m!=T.m|M.n!=T.n) /检验两矩阵能否进行减法运算cout两矩阵行或列不相等,请重新进入系统输入!n;return ;for(k=1;k=T.t;k+)cout输入第kT.datak.iT.datak.jT.datak.e;cout矩阵T的行列形式为:n;for(k=1;k=T.t;k+)bT.datak.iT.datak.j=T.datak.e;for(c=1;c=T.m;c+)for(d=1;d=T.n;d+)coutbcd ;coutendl;for(c=1;c=M.m;c+)for(d=1;d=M.n;d+)f
13、cd=acd-bcd; /两矩阵行、列号相等的元素之差为结果矩阵对应元素cout两矩阵相减后的行列形式为:endl;for(c=1;c=M.m;c+)for(d=1;d=M.n;d+)coutfcd ;coutendl;以上主要设计思想:此功能由函数cut( )实现,当用户选择该功能时系统即提示用户初始化要进行减法的两个矩阵的信息。然后检测这两个矩阵是否符合矩阵相减的规则,如果符合,进行减法运算。否则重新进入系统输入数据。最后输出结果。矩阵的乘法:void mul()/矩阵相乘tripletable M;tripletable T;int m,n,t,i,j,e,k,c,d; int aMAX
14、SIZEMAXSIZE=0;int bMAXSIZEMAXSIZE=0;int fMAXSIZEMAXSIZE=0;coutM.mM.nM.t;for(k=1;k=M.t;k+)cout输入第kM.datak.iM.datak.jM.datak.e;cout矩阵M的行列形式为:n;for(k=1;k=M.t;k+)aM.datak.iM.datak.j=M.datak.e;for(c=1;c=M.m;c+)for(d=1;d=M.n;d+)coutacd ;coutendl;coutT.mT.nT.t;if(M.n!=T.m)cout第一个矩阵的行和第二个矩阵的列不相等,请重新进入系统输入!n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 教学 规划 稀疏 矩阵 运算器
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内