#include<iostream>
using namespace std;
struct Data
{
int row,col;
int num;
};
class Matrix
{
private:
int M[3][4],N[4][3];
struct Data data1[10],data2[10];//这是一种数据类型
int k,p;//k用来记录有多少个有效数值。
public:
void getdata()
{
for(i=0; i<3; i++)
{
for(j=0; j<4; j++)
{
cin>>M[i][j];
}
}
for(i=0; i<4; i++)
{
for(j=0; j<3; j++)
{
cin>>N[i][j];
}
}
}
void getnew()
{
int i,j;
k=0;
p=0;
for(i=0; i<3; i++)
{
for(j=0; j<4; 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<4; 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 re[3][3]={0};
for(int i=0; i<k; i++)
{
for(int j=0; j<p; j++)
{
if(data1[i].col==data2[j].row)//当存在可以进行相乘的数时,还是从定义出发的
{
if(re[data1[i].row][data2[j].col]==0)
{
re[data1[i].row][data2[j].col]=data1[i].num*data2[j].num;
//cout<<"!"<<data1[i].num*data2[j].num<<endl;
}
else re[data1[j].row][data2[i].col]=re[data1[j].row][data2[i].col]+data1[i].num*data2[j].num;
}
}
}
cout<<endl;
for(int i=0; i<3; i++)
{
for(int j=0; j<3; j++)
{
if(re[i][j]!=0)cout<<i<<" "<<j<<" "<<re[i][j]<<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][4],N[4][3];
struct Data data1[10],data2[10];//这是一种数据类型
int k,p;//k用来记录有多少个有效数值。
public:
void getdata()
{
for(i=0; i<3; i++)
{
for(j=0; j<4; j++)
{
cin>>M[i][j];
}
}
for(i=0; i<4; i++)
{
for(j=0; j<3; j++)
{
cin>>N[i][j];
}
}
}
void getnew()
{
int i,j;
k=0;
p=0;
for(i=0; i<3; i++)
{
for(j=0; j<4; 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<4; 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 re[3][3]={0};
for(int i=0; i<k; i++)
{
for(int j=0; j<p; j++)
{
if(data1[i].col==data2[j].row)//当存在可以进行相乘的数时,还是从定义出发的
{
if(re[data1[i].row][data2[j].col]==0)
{
re[data1[i].row][data2[j].col]=data1[i].num*data2[j].num;
//cout<<"!"<<data1[i].num*data2[j].num<<endl;
}
else re[data1[j].row][data2[i].col]=re[data1[j].row][data2[i].col]+data1[i].num*data2[j].num;
}
}
}
cout<<endl;
for(int i=0; i<3; i++)
{
for(int j=0; j<3; j++)
{
if(re[i][j]!=0)cout<<i<<" "<<j<<" "<<re[i][j]<<endl;
}
}
}
};
int main()
{
Matrix a1;
a1.getdata();
a1.getnew();
a1.result();
return 0;
}
