定义一个矩阵类MyMatrix,并且在类中进行运算符重定义,用*实现矩阵相乘。要求必须对运算符进行重载,如果用函数如multiply(matrix,matrix)去实现矩阵之间的运算一律记0分。 输入 第一行输入所需要的矩阵个数c; 第二行输入矩阵的阶数n,即矩阵是一个n*n的矩阵; 第三行开始依次输入c个矩阵. 输出 c个矩阵相乘的结果
时间: 2024-02-18 17:05:01 浏览: 163
矩阵操作,包括相乘、求逆、解行列式值,其中进行了运算符重载
3星 · 编辑精心推荐
好的,以下是一个实现了矩阵类MyMatrix,并重载了运算符*来实现矩阵相乘的C++代码,可以参考一下:
```c++
#include <iostream>
#include <vector>
using namespace std;
class MyMatrix {
private:
vector<vector<int>> matrix;
public:
MyMatrix(int n = 0) {
matrix = vector<vector<int>>(n, vector<int>(n, 0));
}
vector<int>& operator[](int i) {
return matrix[i];
}
const vector<int>& operator[](int i) const {
return matrix[i];
}
MyMatrix operator*(const MyMatrix& other) const {
int n = matrix.size();
MyMatrix result(n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
for (int k = 0; k < n; k++) {
result[i][j] += matrix[i][k] * other[k][j];
}
}
}
return result;
}
};
int main() {
int c, n;
cin >> c >> n;
vector<MyMatrix> matrices(c, MyMatrix(n));
for (int i = 0; i < c; i++) {
for (int j = 0; j < n; j++) {
for (int k = 0; k < n; k++) {
cin >> matrices[i][j][k];
}
}
}
MyMatrix result(n);
for (int i = 0; i < c; i++) {
result = result * matrices[i];
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << result[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
这个代码中,我们定义了一个矩阵类MyMatrix,它包含一个二维向量matrix用于存储矩阵元素。我们重载了运算符[]来访问矩阵的行和列,并重载了运算符*来实现矩阵相乘。在重载的运算符*中,我们使用三重循环来计算矩阵的乘积。
在主函数中,我们首先读入所需的矩阵个数c和矩阵的阶数n,然后依次读入c个矩阵。最后,我们将这些矩阵相乘得到结果,并输出结果矩阵。
希望这个代码能够帮助到你!
阅读全文