完成一个矩阵类,可以存放二维数据,在构造函数中通过参数指定行数和列数,具有矩阵转置的功能和显示数据的功能。要求实现该矩阵类,使得主函数中的测试代码可以正确运行并得到正确的结果。 函数接口定义: 实现矩阵类 裁判测试程序样例: /* 请在这里填写答案 */ int main(){ int r,c; cin>>r>>c; Matrix m(r,c); // 初始大小 2行3列 m.input(); cout<<"datas before:"<<endl; m.show(); m.transform(); cout<<"datas after:"<<endl; m.show(); } 输入样例: 首先输入两个整数代表行数和列数,然后输入矩阵元素。 3 2 1 2 3 4 5 6 输出样例: 分别输出转置之前和之后的矩阵数据。例如: datas before: 1 2 3 4 5 6 datas after: 1 3 5 2 4 6
时间: 2024-01-26 08:04:52 浏览: 58
以下是实现矩阵类的代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
class Matrix {
private:
vector<vector<int>> data;
int row, col;
public:
Matrix(int r, int c): row(r), col(c) {
data.resize(r);
for (int i = 0; i < r; i++) {
data[i].resize(c);
}
}
void input() {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cin >> data[i][j];
}
}
}
void show() {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cout << data[i][j] << " ";
}
cout << endl;
}
}
void transform() {
vector<vector<int>> tmp(col);
for (int i = 0; i < col; i++) {
tmp[i].resize(row);
for (int j = 0; j < row; j++) {
tmp[i][j] = data[j][i];
}
}
swap(row, col);
data = tmp;
}
};
int main() {
int r, c;
cin >> r >> c;
Matrix m(r, c);
m.input();
cout << "datas before:" << endl;
m.show();
m.transform();
cout << "datas after:" << endl;
m.show();
return 0;
}
```
输入样例:
```
3 2
1 2
3 4
5 6
```
输出样例:
```
datas before:
1 2
3 4
5 6
datas after:
1 3 5
2 4 6
```
阅读全文