目录
题目
建立一个矩阵类,可以完成指定的操作或运算。
说明:
- 矩阵为2行3列,基类型为整型;
- 操作或运算:输出(<<)、标准类型(int)与矩阵对象相加(+)且满足交换律(使用转换构造函数完成)。加法规则说明:指整数与矩阵中每一个元素相加,相加结果为矩阵。
可以利用如下测试函数进行验证:
int main()
{
Matrix a(1,1,1,2,3,4),b,c;
int m=2;
cout<<"(1)测试:矩阵+数:"<<endl;
cout<<"矩阵a为:"<<endl<<a;
cout<<"整数m为:"<<m<<endl;
cout<<"a+m的结果为:"<<endl;
b=a+m;
cout<<b;
cout<<"(2)测试:数+矩阵:"<<endl;
cout<<"矩阵a为:"<<endl<<a;
cout<<"整数m为:"<<m<<endl;
cout<<"m+a的结果为:"<<endl;
c=m+a;
cout<<c;
return 0;
}
源码
#include<iostream>
using namespace std;
class Matrix
{
private:
int data[2][3];
public:
Matrix(){};
Matrix(int, int, int, int, int, int);
Matrix(int x);
friend ostream& operator<<(ostream &os, Matrix &m);
friend Matrix operator+(const Matrix &m, const Matrix &n);
};
Matrix::Matrix(int x, int y, int z, int o, int p, int q)
{
data[0][0] = x;
data[0][1] = y;
data[0][2] = z;
data[1][0] = o;
data[1][1] = p;
data[1][2] = q;
}
Matrix::Matrix(int x)
{
for(int i = 0; i < 2; i++)
{
for(int j = 0; j < 3; j++)
{
data[i][j] = x;
}
}
}
ostream& operator<<(ostream &os, Matrix &m)
{
for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 3; ++j)
{
os << m.data[i][j] << " ";
}
os << endl;
}
return os;
}
Matrix operator+(const Matrix &m,const Matrix &n)
{
Matrix result;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
result.data[i][j] = m.data[i][j] + n.data[i][j];
}
}
return result;
}
int main()
{
Matrix a(1,1,1,2,3,4),b,c;
int m=2;
cout<<"(1)测试:矩阵+数:"<<endl;
cout<<"矩阵a为:"<<endl<<a;
cout<<"整数m为:"<<m<<endl;
cout<<"a+m的结果为:"<<endl;
b=a+m;
cout<<b;
cout<<"(2)测试:数+矩阵:"<<endl;
cout<<"矩阵a为:"<<endl<<a;
cout<<"整数m为:"<<m<<endl;
cout<<"m+a的结果为:"<<endl;
c=m+a;
cout<<c;
return 0;
}