c++动态mn矩阵转置
时间: 2024-10-19 12:09:18 浏览: 24
矩阵转置_编程_C++_矩阵转置_
在C++中,动态多维数组(即动态矩阵)的转置通常涉及到两层循环,因为我们需要交换每一行和它对应的列。这里是一个简单的示例,展示了如何使用指针和临时变量来实现动态二维矩阵的转置:
```cpp
#include <iostream>
using namespace std;
// 动态创建矩阵
void createMatrix(int **matrix, int rows, int cols) {
*matrix = new int[rows][cols];
// 初始化矩阵...
}
// 动态矩阵转置
void transpose(int **matrix, int rows, int cols) {
int **transposeMatrix = new int[cols][rows]; // 新建转置矩阵
for (int i = 0; i < rows; ++i) { // 遍历原矩阵行
for (int j = 0; j < cols; ++j) { // 遍历原矩阵列
transposeMatrix[j][i] = matrix[i][j]; // 存储元素到转置矩阵对应位置
}
}
// 替换原矩阵为转置矩阵
delete[] *matrix;
*matrix = transposeMatrix;
}
// 打印矩阵
void printMatrix(int **matrix, int rows, int cols) {
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j)
cout << matrix[i][j] << " ";
cout << endl;
}
}
int main() {
int rows, cols;
cout << "Enter number of rows and columns: ";
cin >> rows >> cols;
int **matrix = new int[rows][cols]; // 创建一个动态矩阵
createMatrix(matrix, rows, cols); // 填充数据...
cout << "Original Matrix:\n";
printMatrix(matrix, rows, cols);
transpose(matrix, rows, cols); // 转置矩阵
cout << "\nTransposed Matrix:\n";
printMatrix(matrix, cols, rows); // 输出转置后的矩阵
// 清理内存
delete[] matrix;
return 0;
}
```
阅读全文