📄 oper.h
字号:
Status add(TSMatrix M,TSMatrix N)
{ for(int m=0;m<MAX;m++)
for(int n=0;n<MAX;n++)
a[m][n]=0;
if (M.nu!=N.nu || M.mu!=N.mu)
return ERROR;
for(int p=1;p<=M.tu;p++)
a[M.data[p].i][M.data[p].j]=M.data[p].e;
for(int q=1;q<=N.tu;q++)
a[N.data[q].i][N.data[q].j]+=N.data[q].e;
flag=1;
return OK;
}
Status sub(TSMatrix M,TSMatrix N)
{
for(int m=0;m<MAX;m++)
for(int n=0;n<MAX;n++)
a[m][n]=0;
if (M.nu!=N.nu || M.mu!=N.mu)
return ERROR;
for(int p=1;p<=M.tu;p++)
a[M.data[p].i][M.data[p].j]=M.data[p].e;
for(int q=1;q<=N.tu;q++)
a[N.data[q].i][N.data[q].j]-=N.data[q].e;
flag=1;
return OK;
}
void makerpos(TSMatrix &M)
{ if(M.tu)
{for(int col=1;col<=M.mu;++col)
M.num[col]=0;
for(int t=1;t<=M.tu;++t)
++M.num[M.data[t].i];
M.cpot[1]=1;
for(col=2;col<=M.mu;++col)
{M.cpot[col]=M.cpot[col-1]+M.num[col-1];}
}
}
Status mul(TSMatrix M,TSMatrix N)
{int tp,p,t,mrow,nrow,ccol,q;
if(M.nu!=N.mu) return ERROR;
for(int m=0;m<MAX;m++)
for(int n=0;n<MAX;n++)
a[m][n]=0;
if(M.tu*N.tu!=0)
for(mrow=1;mrow<=M.mu;++mrow)
{if(mrow<M.mu)
tp=M.cpot[mrow+1];
else
tp=M.tu+1;
for(p=M.cpot[mrow];p<tp;++p)
{nrow=M.data[p].j;
if(nrow<N.mu)
t=N.cpot[nrow+1];
else
t=N.tu+1;
for(q=N.cpot[nrow];q<t;++q)
{ccol=N.data[q].j;
a[mrow][ccol]+=M.data[p].e*N.data[q].e;
}
}
}
flag=1;
return OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -