一个3*3的矩阵类(Matrix)定义如下,重载“+”和“*”运算符,完成两个矩阵的加法和乘法,重载输入运算符能够输入一个矩阵。重载输出运算符能够按矩阵形式输出一个矩阵。主函数中自拟数据进行测试
时间: 2024-11-24 14:42:53 浏览: 12
类运算符重载设计定义一个二维方阵类 matrix。通过重载二元运算符“+”、“-”、“*”和一元运算符“~”, 来实现矩阵加、矩阵减、矩阵乘以及矩阵转置。
5星 · 资源好评率100%
首先,我们要定义一个名为`Matrix`的3x3矩阵类,它包含一个二维数组来存储元素。我们将提供构造函数用于初始化矩阵,以及重载`+`和`*`运算符来实现矩阵的加法和乘法。同时,添加`[]`索引来方便访问和修改元素,以及`input()`和`output()`方法分别用于读取和打印矩阵。
```cpp
#include <iostream>
#include <vector>
class Matrix {
private:
std::vector<std::vector<int>> elements;
static const int ROWS = 3;
static const int COLS = 3;
public:
// 构造函数,接受行列表示矩阵
Matrix(const std::vector<int>& row1, const std::vector<int>& row2, const std::vector<int>& row3) {
elements = {row1, row2, row3};
}
// 加法
Matrix operator+(const Matrix& other) const {
Matrix result;
result.elements.resize(ROWS, std::vector<int>(COLS, 0));
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
result.elements[i][j] = elements[i][j] + other.elements[i][j];
}
}
return result;
}
// 乘法,假设矩阵可以相乘
Matrix operator*(const Matrix& other) const {
Matrix result(0, 0, 0);
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
int sum = 0;
for (int k = 0; k < COLS; k++) {
sum += elements[i][k] * other.elements[k][j];
}
result.elements[i][j] = sum;
}
}
return result;
}
// 输入矩阵
void input() {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
std::cout << "Enter element (" << i + 1 << "," << j + 1 << "): ";
std::cin >> elements[i][j];
}
std::cout << "\n";
}
}
// 输出矩阵
friend std::ostream& operator<<(std::ostream& os, const Matrix& matrix) {
os << "[";
for (int i = 0; i < ROWS; i++) {
os << "[" << std::endl;
for (int j = 0; j < COLS; j++) {
os << elements[i][j] << " ";
if (j != COLS - 1) {
os << "|";
}
}
os << "]" << (i != ROWS - 1 ? ",\n" : "") << "]"; // 行分隔符
}
os << "]";
return os;
}
// 其他辅助方法...
};
int main() {
Matrix m1({1, 2, 3}, {4, 5, 6}, {7, 8, 9});
Matrix m2({9, 8, 7}, {6, 5, 4}, {3, 2, 1});
m1.input();
std::cout << "Matrix m1: " << m1 << std::endl;
Matrix m3 = m1 + m2;
std::cout << "m1 + m2: " << m3 << std::endl;
Matrix m4 = m1 * m2;
std::cout << "m1 * m2: " << m4 << std::endl;
return 0;
}
```
在这个例子中,`main`函数中创建了两个3x3的矩阵`m1`和`m2`,然后演示了它们的加法和乘法运算,并输出结果。注意,实际矩阵乘法需要检查维度是否允许,这里为了简洁,假设所有矩阵都可以相乘。
阅读全文