题目 稀疏阵的相加.doc

题目 稀疏阵的相加.doc

ID:55493049

大小:51.00 KB

页数:11页

时间:2020-05-15

题目 稀疏阵的相加.doc_第1页
题目 稀疏阵的相加.doc_第2页
题目 稀疏阵的相加.doc_第3页
题目 稀疏阵的相加.doc_第4页
题目 稀疏阵的相加.doc_第5页
资源描述:

《题目 稀疏阵的相加.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、题目:稀疏矩阵的相加1、问题描述稀疏矩阵是指那些多数元素为零的矩阵。利用“稀疏”特点进行存储和计算可以大大节省存储空间,提高计算效率。实现一个能进行稀疏矩阵基本运算的运算器。以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,实现两个矩阵相加运算。稀疏矩阵的输入形式采用三元组表示,而运算结果的矩阵则以通常的阵列形式列出。2、设计2.1.存储结构设计稀疏矩阵的行逻辑连接的顺序表存储结构表示如下:#defineMAXSIZE20/*非零元个数最大值*/#defineMAXRC10/*各行第一个非零元总数最大值*/typedefstruct{inti,j;/*行下标,列下标*/i

2、nte;/*非零元值*/}Triple;typedefstruct{/*行逻辑链接的顺序表*/Tripledata[MAXSIZE+1];/*非零元三元组表,data[0]未用*/intrpos[MAXRC+1];/*各行第一个非零元的位置表*/intmu,nu,tu;/*阵的行数、列数和非零元个数*/}TSMatrix;2.2.主要算法设计对2个矩阵相加的算法如下:boolAddSMatrix(TSMatrixM,TSMatrixN,TSMatrix&Q)/*求稀疏矩阵的和Q=M+N*/{intp=1,q=1,k=1;if(M.tu==0&&N.tu==0)/*为空矩阵

3、的情况*/{cout<<"该矩阵为空矩阵"<N.data[q].i)/*M的行值比N的大取N的值*/{Q.data[k].i=N.data[q].i;Q.data[k].j=N.data[q]

4、.j;Q.data[k].e=N.data[q].e;k++;q++;}else/*M的行值和N一样大的情况*/{if(M.data[p].jN.data[q].j)/*M的列值比M的大取N的值*/{Q.data[k].i=N.data[q].i;Q.data[k].j=N.data[q].j;Q.data[k].e

5、=N.data[q].e;k++;q++;}else/*M和N的列值相等*/{if(M.data[p].e+N.data[q].e!=0)/*相加结果不为0才取M值*/{Q.data[k].i=M.data[q].i;Q.data[k].j=M.data[q].j;Q.data[k].e=M.data[q].e+N.data[p].e;k++;}p++;q++;}}}while(q<=N.tu)/*再看N矩阵,直接取N值*/{Q.data[k].i=N.data[q].i;Q.data[k].j=N.data[q].j;Q.data[k].e=N.data[q].e;k+

6、+;q++;}if(M.mu>N.mu)Q.mu=M.mu;/*Q的行和列的值取M,N的最大值*/elseQ.mu=N.mu;if(M.nu>N.nu)Q.nu=M.nu;elseQ.nu=N.nu;Q.tu=k-1;cout<<"相加成功"<

7、错误了,运行的结果不正确。就是矩阵相加的结果部分不正确,初步断定算法写的有问题,就对该部分进行调试,设置断点到矩阵相加函数,执行到断点,输入测试用例后,开始观察各变量的值是否正常。刚开始就发现执行顺序有问题,才发现自己误把矩阵的三元表存储当成是数组的形式了,数组是从0开始而三元组是从1开始的,初值设置有问题,于是都设为1,程序运行后与期待结果接近了.但发现程序对于两个矩阵取同一位置时的值相加是否为0的细节处理的不是很好,于是重新作处理,程序结果才显示正确。3.2.对设计和编码的讨论和分析这次设计主要包括以下几个部分:稀疏矩阵的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。