稀疏矩阵运算器稀疏矩阵运算器
#include
#include
#define Maxterms 50
typedef int ElemType;
struct Triple
{
int row,col;
ElemType val;
};
struct SMatrix
{
int m,n,t;
Triple sm[Maxterms];
};
void InitMatrix(SMatrix &M); void InputMatrix(SMatrix &M,int m,int n);
void Output...
稀疏矩阵运算器
#include
#include
#define Maxterms 50
typedef int ElemType;
struct Triple
{
int row,col;
ElemType val;
};
struct SMatrix
{
int m,n,t;
Triple sm[Maxterms];
};
void InitMatrix(SMatrix &M); void InputMatrix(SMatrix &M,int m,int n);
void OutputMatrix(SMatrix &M); SMatrix Transpose(SMatrix &M); SMatrix Add(SMatrix &M1,SMatrix &M2);
SMatrix ChengFa(SMatrix &M1,SMatrix &M2);
//主
void main()
{
int m,n;int ch;
cout<<"1.矩阵的转置 2.矩阵的加法运算 3.矩阵的乘法运算"<>ch;
if(ch==1)
{
SMatrix M,N;
InitMatrix(M);InitMatrix(N);
cout<<"请输入矩阵的行值m和列值n:"<>m>>n;
cout<<"请以三元组的形式输入矩阵:"<>m>>n;
cout<<"请以三元组的形式输入矩阵:"<>m>>n;
cout<<"请以三元组的形式输入矩阵:"<>m>>n;
cout<<"请以三元组的形式输入矩阵:"<>m>>n;
cout<<"请以三元组的形式输入矩阵:"<>row>>col>>val;
while(row!=0)
{
j ;
M.sm[j].row=row;
M.sm[j].col=col;
M.sm[j].val=val;
cin>>row>>col>>val;
//结束输入时需要输入三个0来终止输入
}
M.t=j;
}
//矩阵的输出
void OutputMatrix(SMatrix &M)
{
int j=1;
for(int i=1;i<=M.m;i )
{
int k;
if(i==M.sm[j].row)
{
int h,s;h=s=0;
while(i==M.sm[j].row)
{
for(k=1;kM.t) break;
}
int p;p=M.n-M.sm[j-1].col;
while(p!=0)
{
cout<<"0"<<" ";p--;
}
cout<M1.t)||(k>M2.t)) break;
}
else if(M1.sm[j].colM1.t) break;
}
else if(M1.sm[j].col>M2.sm[k].col)
{
M.sm[h].row=M2.sm[k].row;
M.sm[h].col=M2.sm[k].col;
M.sm[h].val=M2.sm[k].val;
h ;k ;
if(k>M2.t) break;
}
}
if((j>M1.t)||(k>M2.t)) break;
while(M1.sm[j].rowM1.t) break;
}
if(j>M1.t) break;
while(M1.sm[j].row>M2.sm[k].row)
{
M.sm[h].row=M2.sm[k].row;
M.sm[h].col=M2.sm[k].col;
M.sm[h].val=M2.sm[k].val;
h ;k ;
if(k>M2.t) break;
}
//if(k>M2.t) break;
}
if(j>M1.t)
while(k<=M2.t)
{
M.sm[h].row=M2.sm[k].row;
M.sm[h].col=M2.sm[k].col;
M.sm[h].val=M2.sm[k].val;
h ;k ;
}
if(k>M2.t)
while(j<=M1.t)
{
M.sm[h].row=M1.sm[j].row;
M.sm[h].col=M1.sm[j].col;
M.sm[h].val=M1.sm[j].val;
h ;j ;
}
M.t=--h;
return M;
}
//矩阵的乘法
SMatrix ChengFa(SMatrix &M1,SMatrix &M2)
{
SMatrix M,N;
InitMatrix(M);InitMatrix(N);
if(M1.n!=M2.m)
{
cout<<"左矩阵的行数和右矩阵的列数不相等,不可做乘法~"<M1.t)||(f>N.t)) break;
}
else if(M1.sm[g].colM1.t) break;
}
else if(M1.sm[g].col>N.sm[f].col)
{
f ;
if(f>N.t) break;
}
}
if(s!=0)
{
M.sm[h].row=i;
M.sm[h].col=x;
M.sm[h].val=s;
h ;
}
if(f>N.t) break;
while(x==N.sm[k].row)
{
k ;
if(k>N.t) break;
}
if(k>N.t) break;
}
if(g>M1.t) break;
while(i==M1.sm[j].row)
j ;
}
M.t=--h;
return M;
}
本文档为【稀疏矩阵运算器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。