C++代码 读取未给出行列数的矩阵,并转置输出
时间: 2023-09-15 22:24:22 浏览: 217
C/C++实现矩阵的转置(示例代码)
下面是一个可以读取未给出行列数的矩阵并将其转置输出的C++代码示例:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<vector<int>> matrix; // 定义二维矩阵
int num;
while (cin >> num) { // 持续读入整数,以 EOF 结束
vector<int> row; // 定义一行
row.push_back(num); // 将整数添加到一行中
char c = getchar(); // 读取下一个字符
if (c == '\n' || c == EOF) { // 如果该行结束
matrix.push_back(row); // 将一行添加到矩阵中
if (c == EOF) { // 如果到达文件末尾,退出循环
break;
}
} else if (c == ' ') { // 如果该行还未结束
while (cin >> num) { // 持续读入整数,直到该行结束
row.push_back(num); // 将整数添加到一行中
c = getchar(); // 读取下一个字符
if (c == '\n' || c == EOF) { // 如果该行结束
matrix.push_back(row); // 将一行添加到矩阵中
row.clear(); // 清空行向量
if (c == EOF) { // 如果到达文件末尾,退出循环
break;
}
break; // 开始新的一行
}
}
}
}
int rows = matrix.size(); // 矩阵的行数
int cols = matrix[0].size(); // 矩阵的列数
vector<vector<int>> transpose(cols, vector<int>(rows)); // 定义转置矩阵
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
transpose[j][i] = matrix[i][j]; // 进行矩阵转置
}
}
// 输出转置矩阵
for (int i = 0; i < cols; i++) {
for (int j = 0; j < rows; j++) {
cout << transpose[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
这个代码使用了二维动态数组 vector 来实现矩阵的存储和转置,可以处理不确定行列数的矩阵输入,并输出转置后的矩阵。
阅读全文