#include<iostream>
using namespace std;
struct Data
{
int row,col;
int num;
};
class Matrix
{
private:
int M[3][3],N[3][3];
struct Data data1[10],data2[10];//这是一种数据类型
int k,p;//k用来记录有多少个有效数值。
public:
void getdata()//我自己规定位三行三列类型,输入数值
{
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
cin>>M[i][j];
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
cin>>N[i][j];
}
}
}
void getnew()//遍历数值,存储有效数值
{
//cout<<"1"<<endl;
int i,j;
k=0;
p=0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(M[i][j]!=0)
{
data1[k].row=i;
data1[k].col=j;
data1[k].num=M[i][j];
k++;
}
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(N[i][j]!=0)
{
data2[p].row=i;
data2[p].col=j;
data2[p].num=N[i][j];
p++;
}
}
}
}
void result()
{
int c[3][3]={0};
for(int i=0;i<k;i++)
{
c[data1[i].row][data1[i].col]=data1[i].num;
}
for(int i=0;i<p;i++)
{
if(c[data2[i].row][data2[i].col]==0)c[data2[i].row][data2[i].col]=data2[i].num;
else c[data2[i].row][data2[i].col]=c[data2[i].row][data2[i].col] + data2[i].num;
}
cout<<endl;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
cout<<c[i][j]<<" ";
}
cout<<endl;
}
}
};
int main()
{
Matrix a1;
a1.getdata();
a1.getnew();
a1.result();
return 0;
}
重要的注意点是两个二维数组相加是采用覆盖性的,若数组的值为空,则说明该点没值,则给它赋值。若有值则相加。
using namespace std;
struct Data
{
int row,col;
int num;
};
class Matrix
{
private:
int M[3][3],N[3][3];
struct Data data1[10],data2[10];//这是一种数据类型
int k,p;//k用来记录有多少个有效数值。
public:
void getdata()//我自己规定位三行三列类型,输入数值
{
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
cin>>M[i][j];
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
cin>>N[i][j];
}
}
}
void getnew()//遍历数值,存储有效数值
{
//cout<<"1"<<endl;
int i,j;
k=0;
p=0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(M[i][j]!=0)
{
data1[k].row=i;
data1[k].col=j;
data1[k].num=M[i][j];
k++;
}
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(N[i][j]!=0)
{
data2[p].row=i;
data2[p].col=j;
data2[p].num=N[i][j];
p++;
}
}
}
}
void result()
{
int c[3][3]={0};
for(int i=0;i<k;i++)
{
c[data1[i].row][data1[i].col]=data1[i].num;
}
for(int i=0;i<p;i++)
{
if(c[data2[i].row][data2[i].col]==0)c[data2[i].row][data2[i].col]=data2[i].num;
else c[data2[i].row][data2[i].col]=c[data2[i].row][data2[i].col] + data2[i].num;
}
cout<<endl;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
cout<<c[i][j]<<" ";
}
cout<<endl;
}
}
};
int main()
{
Matrix a1;
a1.getdata();
a1.getnew();
a1.result();
return 0;
}
重要的注意点是两个二维数组相加是采用覆盖性的,若数组的值为空,则说明该点没值,则给它赋值。若有值则相加。