编程语:C 难度:中等 单个测试集评测时长限制:3秒 编写一个Matrix类,实现下列要求:能够输入、输出矩阵,执行矩阵转置,加减法(包括负数)、乘法,将矩阵输出;根据主函数的要求编写;保证数据合法; 备注:(752)
时间: 2023-06-13 16:07:28 浏览: 222
以下是一个参考的C++代码实现,实现了矩阵的输入、输出、转置、加减法和乘法功能:
```
#include <iostream>
#include <vector>
using namespace std;
class Matrix {
private:
int m, n;
vector<vector<int>> data;
public:
Matrix(int m, int n) : m(m), n(n), data(m, vector<int>(n)) {}
void input() {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cin >> data[i][j];
}
}
}
void output() {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cout << data[i][j] << " ";
}
cout << endl;
}
}
Matrix transpose() {
Matrix result(n, m);
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
result.data[j][i] = data[i][j];
}
}
return result;
}
Matrix operator+(Matrix& other) {
Matrix result(m, n);
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
result.data[i][j] = data[i][j] + other.data[i][j];
}
}
return result;
}
Matrix operator-(Matrix& other) {
Matrix result(m, n);
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
result.data[i][j] = data[i][j] - other.data[i][j];
}
}
return result;
}
Matrix operator*(Matrix& other) {
Matrix result(m, other.n);
for (int i = 0; i < m; i++) {
for (int j = 0; j < other.n; j++) {
int sum = 0;
for (int k = 0; k < n; k++) {
sum += data[i][k] * other.data[k][j];
}
result.data[i][j] = sum;
}
}
return result;
}
};
int main() {
int m, n;
cin >> m >> n;
Matrix A(m, n);
A.input();
int op;
cin >> op;
if (op == 1) { // 转置
Matrix B = A.transpose();
B.output();
} else if (op == 2) { // 加法
Matrix B(m, n);
B.input();
Matrix C = A + B;
C.output();
} else if (op == 3) { // 减法
Matrix B(m, n);
B.input();
Matrix C = A - B;
C.output();
} else if (op == 4) { // 乘法
int p;
cin >> p;
Matrix B(n, p);
B.input();
Matrix C = A * B;
C.output();
}
return 0;
}
```