我正在尝试使用struct对两个矩阵求和,但它不起作用 .
如果这个代码可以优化,请告诉我:D
编译:
g++ -O2 -Wall program.cpp -o program
输出:
在/ usr / include / c /4.8/iostream:39:0中包含的文件中,来自Proy3.cpp:2:/ usr / include / c /4.8/ostream:548:5:注意:template std :: basic_ostream&std: :operator <<(std :: basic_ostream&,const unsigned char *)operator <<(basic_ostream&__ out,const unsigned char * __s)^ / usr / include / c /4.8/ostream:548:5:注意:模板参数推导/替换失败:Proy3.cpp:51:30:注意:'std :: istream '不是从'std :: basic_ostream'cin <<&M2.x [i] [j]派生的;
码:
# include < cstdio >
# include < iostream >
typedef struct Matrix
{
int row, column;
int x[20][20];
};
Matrix M1,M2;
使用命名空间std;
int main(){
cout << "Insert size rows: Mat[a]";
cin >> M1.row);
cout << "Insert size of columns Mat[a]";
cin >> M1.column;
cout << "Insert size of rows Mat[b]";
cin >> M2.row;
cout << "Insert size of columns Mat[b]";
cin >> M2.column;
int i, j;
// Matrix x
for(i = 0; i <= M1.row; i++)
{
for(j = 0; j <= M1.column; j++)
{
cout << "Insert number for matrix X : \n";
cin >> M1.x[i][j]
}
}
// Matrix y
for(i = 0; i <= M2.row; i++)
{
for(j = 0; j <= M2.column; j++)
{
cout << "Insert number for matrix Y : \n";
cin << M2.x[i][j];
}
}
// Matrix X + Matrix Y
for(i = 0; i <= M1.row; i++)
{
for(j = 0; j < M1.column; j++)
{
cout <<"The sum of " << M1.x[i][j] << " + " << M2.x[i][j] << " = " << M1.x[i][j] + M2.x[i][j] << endl;
}
}
return 0;
}
2 回答
您尝试访问的
M2.M1.y
没有元素 . 另外你为什么在M2
内声明M1
. 你可能只有一个结构,并有两个实例 . 像现在您可以输入两个矩阵 .
此外,您必须使用
cin>>a
而不是cin>>&a
.也应该
cin << &M2.x[i][j];
我认为cin陈述应该是cin >>&M2.x [i] [j];而不是cin <<&M2.x [i] [j];