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