稀疏矩阵的运算.docVIP

  • 1
  • 0
  • 约6.2千字
  • 约 9页
  • 2019-11-11 发布于广东
  • 举报
#includeiostream using namespace std; typedef int ElemType ; const int MaxTerms=10; struct Triple { int row,col; ElemType val; }; struct SMatrix { int m,n,t; Triple sm[MaxTerms+1]; }; void InputMatrix(SMatrix M,int m,int n); void OutputMatrix(SMatrix M); void InitMatrix(SMatrix M); SMatrix FastTranspose(SMatrix M); SMatrix Add(SMatrix M1,SMatrix M2); SMatrix Mul(SMatrix M1,SMatrix M2); void main() { T: int p; cout1.矩阵转置 ; cout2.矩阵相加 ; cout3.矩阵相乘 ; cout0.终止程序 endl; cout请所要进行运算的序号:; cinp; int a,b,c,d; SMatrix M,N,L; switch (p) { case 1:cout请输入行数和列数:; cina; cinb; InputMatrix(M,a,b); N=FastTranspose(M); cout转置矩阵为:endl; OutputMatrix(N); break; case 2:cout请输入行数和列数:; cina; cinb; InputMatrix(M,a,b); cout请输入行数和列数:; cinc; cind; InputMatrix(L,c,d); N=Add(M,L); cout矩阵和为:endl; OutputMatrix(N);break; case 3:cout请输入行数和列数:; cina; cinb; InputMatrix(M,a,b); cout请输入行数和列数:; cinc; cind; InputMatrix(L,c,d); N=Mul(M,L); cout两个矩阵相乘得:endl; OutputMatrix(N);break; case 4:exit(1); default:cout输入信息有误!!!!endl; } goto T; } void InputMatrix(SMatrix M,int m,int n) { M.m=m;M.n=n; int row,col,val; int k=0; cout请输入第k+1元素:endl; cinrowcolval; while(row!=0) { k++; M.sm[k].row=row; M.sm[k].col=col; M.sm[k].val=val; cout请输入第k+1元素:endl; cinrowcolval; } M.t=k; } void OutputMatrix(SMatrix M) { int k=1; for(int i=1;iM.m+1;i++) { for(int j=1;jM.n+1;j++) { if(i==M.sm[k].rowj==M.sm[k].col) { coutM.sm[k].val ; k++; } else { cout0 ; } } coutendl; } } void InitMatrix(SMatrix M)//矩阵初始化 { M.m=0; M.n=0; M.t=0; } SMatrix FastTranspose(SMatrix M)//矩阵转置 { SMatrix S; InitMatrix(S); int m,n,t; m=M.m; n=M.n; t=M.t; S.m=n; S.n=m; S.t=t; if(t==0) { cout转置矩阵:endl; OutputMatrix(S); return (S);

文档评论(0)

1亿VIP精品文档

相关文档