求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。如:c=a+b。
#include<iostream>usingnamespacestd;classBox{public:Box();Boxoperator+(Box&c);voiddis...
#include<iostream>
using namespace std;
class Box
{public:
Box();
Box operator + (Box &c);
void display();
void input();
private:
int a[2][3];
};
Box::Box()
{int i=0,j=0;
for(;i<2;i++)
for(;j<3;j++)
a[i][j]=0;
}
void Box::input()
{int i=0,j=0;
for(;i<2;i++)
for(;j<3;j++)
cin>>a[i][j];}
void Box::display()
{int i=0,j=0;
for(;i<2;i++)
{cout<<endl;
for(;j<3;j++)
cout<<" "<<a[i][j];}}
Box Box::operator + (Box &c)
{Box t;
int i=0,j=0;
for(;i<2;i++)
for(;j<3;j++)
t.a[i][j]=a[i][j]+c.a[i][j];
return t;
}
int main()
{Box b1,b2,b3;
b1.input();
b2.input();
b1.display();
b2.display();
b3=b1+b2;
cout<<"b1+b2=";
b3.display();
return 0 ;}
b1,b2,输入不完整 展开
using namespace std;
class Box
{public:
Box();
Box operator + (Box &c);
void display();
void input();
private:
int a[2][3];
};
Box::Box()
{int i=0,j=0;
for(;i<2;i++)
for(;j<3;j++)
a[i][j]=0;
}
void Box::input()
{int i=0,j=0;
for(;i<2;i++)
for(;j<3;j++)
cin>>a[i][j];}
void Box::display()
{int i=0,j=0;
for(;i<2;i++)
{cout<<endl;
for(;j<3;j++)
cout<<" "<<a[i][j];}}
Box Box::operator + (Box &c)
{Box t;
int i=0,j=0;
for(;i<2;i++)
for(;j<3;j++)
t.a[i][j]=a[i][j]+c.a[i][j];
return t;
}
int main()
{Box b1,b2,b3;
b1.input();
b2.input();
b1.display();
b2.display();
b3=b1+b2;
cout<<"b1+b2=";
b3.display();
return 0 ;}
b1,b2,输入不完整 展开
1个回答
展开全部
因为你的j变量在i-for循环外初始化,所以导致j变量只循环一次就到了3。应该把j=0;放在i-for循环
里面,或者把j=0;写在j-for循环中,也就是for(int j=0;j<3;j++)。
我帮你改过来了,用的是第二种方法。完整的程序如下:
#include<iostream>
using namespace std;
class Box
{public:
Box();
Box operator + (Box &c);
void display();
void input();
private:
int a[2][3];
};
Box::Box()
{
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
a[i][j]=0;
}
void Box::input()
{
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
cin>>a[i][j];}
void Box::display()
{
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
cout<<" "<<a[i][j];
cout<<endl;
}}
Box Box::operator + (Box &c)
{Box t;
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
t.a[i][j]=a[i][j]+c.a[i][j];
return t;
}
int main()
{Box b1,b2,b3;
b1.input();
b2.input();
b1.display();
b2.display();
b3=b1+b2;
cout<<"b1+b2="<<endl;
b3.display();
return 0 ;}
里面,或者把j=0;写在j-for循环中,也就是for(int j=0;j<3;j++)。
我帮你改过来了,用的是第二种方法。完整的程序如下:
#include<iostream>
using namespace std;
class Box
{public:
Box();
Box operator + (Box &c);
void display();
void input();
private:
int a[2][3];
};
Box::Box()
{
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
a[i][j]=0;
}
void Box::input()
{
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
cin>>a[i][j];}
void Box::display()
{
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
cout<<" "<<a[i][j];
cout<<endl;
}}
Box Box::operator + (Box &c)
{Box t;
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
t.a[i][j]=a[i][j]+c.a[i][j];
return t;
}
int main()
{Box b1,b2,b3;
b1.input();
b2.input();
b1.display();
b2.display();
b3=b1+b2;
cout<<"b1+b2="<<endl;
b3.display();
return 0 ;}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询