📄 矩阵+-.txt
字号:
#include<iostream.h>
#include<iomanip.h>
#define max 20
struct triple
{
int m,n;
int num;
};
struct matrix
{
triple data[max];
int nz,line,row;
};
void input(matrix &m1,matrix &m2 )
{
cout<<"请输入距阵1的行数和列数:"<<endl;
cin>>m1.line>>m1.row;
cout<<"请输入数据!(数值,行,列)!"<<endl;
int i=0;
cout<<"当输入数值为0时,输入结束!"<<endl;
while(1)
{
cin>>m1.data[i].num;
if(m1.data[i].num==0)
break;
cin>>m1.data[i].m;
cin>>m1.data[i].n;
i++;
}
m1.nz=i;
cout<<"请输入距阵2的行数和列数:"<<endl;
cin>>m2.line>>m2.row;
cout<<"请输入数据!(数值,行,列)!"<<endl;
i=0;
cout<<"当输入数值为0时,输入结束!"<<endl;
while(1)
{
cin>>m2.data[i].num;
if(m2.data[i].num==0)
break;
cin>>m2.data[i].m;
cin>>m2.data[i].n;
i++;
}
m2.nz=i;
}
void print(matrix r)
{
cout<<"计算结果如下:"<<endl;
int i,j,k;
for( i=0;i<r.line;i++)
{
for( j=0;j<r.row;j++)
{
for( k=0;k<r.nz;k++)
{
if(i==r.data[k].m&&j==r.data[k].n)
break;
}
if(k==r.nz)
cout<<setw(6)<<0;
else
cout<<setw(6)<<r.data[k].num;
}
cout<<endl<<endl<<endl;
}
}
void add(matrix &r, matrix &m1, matrix &m2)
{
r.line=m2.line;r.row=m2.row;
int k=0,i=0,j=0;
for( i;i<m1.nz;i++)
{
r.data[k].num=m1.data[i].num;
r.data[k].m=m1.data[i].m;
r.data[k].n=m1.data[i].n;
k++;
}
for(i=0;i<m2.nz;i++)
{
for(j=0;j<m1.nz;j++)
{
if ((m1.data[j].m==m2.data[i].m)&&(m1.data[j].n==m2.data[i].n))
{
r.data[j].num+=m2.data[i].num;
break;
}
}
if(j==m1.nz)
{
r.data[k].num=m2.data[i].num;
r.data[k].m=m2.data[i].m;
r.data[k].n=m2.data[i].n;
k++;
}
}
r.nz=k;
}
void dec(matrix &r, matrix &m1, matrix &m2)
{
r.line=m2.line;r.row=m2.row;
int k=0,i=0,j=0;
for( i;i<m1.nz;i++)
{
r.data[k].num=m1.data[i].num;
r.data[k].m=m1.data[i].m;
r.data[k].n=m1.data[i].n;
k++;
}
for(i=0;i<m2.nz;i++)
{
for(j=0;j<m1.nz;j++)
{
if ((m1.data[j].m==m2.data[i].m)&&(m1.data[j].n==m2.data[i].n))
{
r.data[j].num-=m2.data[i].num;
break;
}
}
if(j==m1.nz)
{
r.data[k].num=-m2.data[i].num;
r.data[k].m=m2.data[i].m;
r.data[k].n=m2.data[i].n;
k++;
}
}
r.nz=k;
}
void mul(matrix &r,matrix &m1,matrix &m2)
{
int i=0,j=0,k=0,temp=0;
r.nz=0;
r.line=m1.line;
r.row=m2.row;
for(i;i<m1.nz;i++)
{
j=0;
for( j;j<m2.nz;j++)
{
if(m1.data[i].n==m2.data[j].m)
{
temp=m1.data[i].num*m2.data[j].num;
k=0;
for(k;k<r.nz;k++)
{
if((r.data[k].m==m1.data[i].m)&&(r.data[k].n==m2.data[j].n))
break;
}
if(k==r.nz)
{
r.data[r.nz].num=temp;
r.data[r.nz].m=m1.data[i].m;
r.data[r.nz].n=m2.data[j].n;
r.nz++;
}
else
r.data[k].num+=temp;
}
}
}
}
void main()
{
matrix m1,m2, r;
input(m1,m2);
add(r,m1,m2);
print(r);
input(m1,m2);
dec(r,m1,m2);
print(r);
input(m1,m2);
mul(r,m1,m2);
print(r);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -