资源描述:
《稀疏矩阵运器.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、稀疏矩阵运算器需求分析1.按照压缩存储的概念,只存储稀疏矩阵的非零元,以两个三元组{i,j,e}来表示矩阵的非零元的行,列和数值,就确定了一个非零元.由此,稀疏矩阵可由表示非零元的三元数组及行列数确定.2.用户输入数据作为三元组的行,列和非零元的个数,用逗号隔开.并输入非零元的行,列和数值.3.本程序只对两个矩阵进行四则运算,所的结果矩阵应该另生成,用二维数组存放,并放入新的矩阵中,只要对矩阵求解就能求出答案.4.测试数据(附后).5.程序执行命令为:1)加法命令;2)减法命令;3)乘法命令;概要设计1.设定稀疏矩阵的抽象数据类型定义
2、:ADTSparseMatrix{数据对象:D={aij
3、i=1,2,……,n;aij属于Elemset,m和n分别为矩阵的行和列数}数据关系:R={Row,Col}Row={
4、1<=i<=m,1<=j<=n-1}Col={
5、1<=i<=m-1,1<=j<=n}基本操作:CreateMatrix(&M);操作结果:创建稀疏矩阵M.PrintSMatrix(M);初始条件:稀疏矩阵M存在.操作结果:输出稀疏矩阵M.AddSMartrix(M,N,&Q);初始条件:稀疏矩阵M存在.操作结
6、果:求稀疏矩阵的和Q=M+N;SubtMatrix(M,N,&Q);初始条件:稀疏矩阵M存在.操作结果:求稀疏矩阵的差Q=M-N;MultSMatrix(M,N,&Q);初始条件:稀疏矩阵M存在操作结果:求稀疏矩阵M的乘积Q=M*N.}ADTSparseMatrix2.本程序包括两个模块.1)主程序模块:Voidmain(){初始化;接受命令;While(命令!=“退出”){处理命令;接受命令;}}2).稀疏矩阵模块--实现稀疏矩阵抽象数据类型各模块之间的调用关系如下:主程序模块->稀疏矩阵模块3).求解矩阵的加减乘的运算:(1)加法
7、:若行和列相等,则数值相加,存入数组中;否则直接存入数组中;最后将数组中的元素放入新生成的矩阵中.(2)减法:使第二个矩阵的每个数值都乘以-1,存入原来的数组中;接着调用加法运算函数进行运算;(3)乘法:若m.data中列等于n.data中行的各对应元素想乘,存入数组中,并以m.data的行和n.data的列作为数组的下标,相加所有相同的数组,否则直接存入数组,最后存入新的矩阵中.1.稀疏矩阵类型Typedefstruct{inti,j;inte;}triple;Typedefstruct{trupledata[MAXSIZE+1];
8、intmu,nu,tu;}tsmatrix;VoidCreateMatrix(tsmatrix&M,intx,inty)//按照用户输入行,列,非零元的个数,并依次输入非零元的行,列,值,并在坐标为(x,y)的位置进行打印.VoidPrintSMaritx(tsmatrixm,intx,inty)//在坐标为(x,y)的位置打印.Intaddtsmatrix(tsmatrixm,tsmatrix,tsmatrix&q)//使矩阵M,N进行加法操作,并把值赋于Q矩阵详细设计(3)Intsubtsmatrix(tsmatrixm,tsma
9、trix,tsmatrix&q)//使矩阵M,N进行减法操作,并把值赋于Q矩阵Intmultsmatrix(tsmatrixm,tsmatrix,tsmatrix&q)//使矩阵M,N进行乘法操作,并把值赋于Q矩阵2.主函数和其他函数的伪码算法Voidmain(){initscreen();//初始化readcommand(cmd);//读入一个命令符while(cmd!=‘q’&&cmd!=‘Q’){interpret(cmd);//解释执行操作命令符readcommand(cmd);//读入一个命令符}}initscreet(){
10、clrscr();inti;gotoxy(1,1);printf("**************************************************************************");gotoxy(1,2);printf("*ADD--a(A)SUB--s(S)MUL--m(M)Quit--q(Q)*");gotoxy(1,3);printf("**************************************************************************");
11、gotoxy(1,23);printf("**************************************************************************");gotoxy(1,24)