2. 有两个矩阵A和B,均为3行3列。重载运算符“+”和州,使之分别能用于矩阵相加和相乘。C=A+B,D=A*B。要求:声明一个矩阵类matrix,有一个私有二维数组成员(int m131I31) 其中,公有成员函数有: (1)一个不带参数的构造函数(使数组成员的所有元素默认值为1); (2)一个带一个参数的构造函数(用来对二维数组成员进行初始化); (3) 2个成员西数分别对运算符“+”、nx进行重载,使之能用于矩阵类matrix的两个对象的相加和相乘; (4)一个用于输出显示矩阵相加和相乘运行结果的输出函数display0。 请根据主函数的给定代码写出类的定义部分,要求主函数不能改动: int main int a[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int b[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; Matrix A(a); Matrix B(b); Matrix C = A + B; Matrix D = A * B; cout << "A+B" << endl; C.display; cout << ' << endl; cout << "AxB" << endl; D.display0; return 0;给出代码与注释并输出运行结果
时间: 2024-01-30 18:01:48 浏览: 51
矩阵A和矩阵B相乘程序
以下是类的定义部分代码:
```cpp
class Matrix {
private:
int m[3][3]; // 私有二维数组成员
public:
Matrix(); // 不带参数的构造函数
Matrix(int arr[3][3]); // 带一个参数的构造函数
Matrix operator+(const Matrix& other) const; // 重载运算符“+”
Matrix operator*(const Matrix& other) const; // 重载运算符“*”
void display() const; // 输出矩阵相加结果的函数
void display0() const; // 输出矩阵相乘结果的函数
};
```
完整的类定义及实现代码如下:
```cpp
#include <iostream>
using namespace std;
class Matrix {
private:
int m[3][3]; // 私有二维数组成员
public:
Matrix(); // 不带参数的构造函数
Matrix(int arr[3][3]); // 带一个参数的构造函数
Matrix operator+(const Matrix& other) const; // 重载运算符“+”
Matrix operator*(const Matrix& other) const; // 重载运算符“*”
void display() const; // 输出矩阵相加结果的函数
void display0() const; // 输出矩阵相乘结果的函数
};
// 不带参数的构造函数,将数组成员的所有元素默认值设为1
Matrix::Matrix() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
m[i][j] = 1;
}
}
}
// 带一个参数的构造函数,用来对二维数组成员进行初始化
Matrix::Matrix(int arr[3][3]) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
m[i][j] = arr[i][j];
}
}
}
// 重载运算符“+”,使之能用于矩阵类matrix的两个对象的相加
Matrix Matrix::operator+(const Matrix& other) const {
Matrix result;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
result.m[i][j] = m[i][j] + other.m[i][j];
}
}
return result;
}
// 重载运算符“*”,使之能用于矩阵类matrix的两个对象的相乘
Matrix Matrix::operator*(const Matrix& other) const {
Matrix result;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
result.m[i][j] = 0;
for (int k = 0; k < 3; k++) {
result.m[i][j] += m[i][k] * other.m[k][j];
}
}
}
return result;
}
// 输出矩阵相加结果的函数
void Matrix::display() const {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cout << m[i][j] << " ";
}
cout << endl;
}
}
// 输出矩阵相乘结果的函数
void Matrix::display0() const {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cout << m[i][j] << " ";
}
cout << endl;
}
}
int main() {
int a[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int b[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
Matrix A(a);
Matrix B(b);
Matrix C = A + B;
Matrix D = A * B;
cout << "A+B" << endl;
C.display();
cout << endl;
cout << "AxB" << endl;
D.display0();
return 0;
}
```
输出结果如下:
```
A+B
2 4 6
8 10 12
14 16 18
AxB
30 36 42
66 81 96
102 126 150
```
阅读全文