矩阵旋转与转置 用C++编写程序和函数,实现以下功能: (1)输入一个自定义大小的二维矩阵; (2)回显该矩阵; (3)显示输出该矩阵顺时针旋转90度; (4)显示输出该矩阵的转置矩阵;
时间: 2024-10-09 07:12:51 浏览: 44
C++实验项目 1.编写矩阵类Matrix-4x4,实现矩阵初始化、求逆、转置、访问等基本功能 2.基于运算符重载,实现矩阵的加
在C++中,你可以创建一个名为`MatrixOperations`的类,其中包含成员变量表示矩阵,以及相应的构造函数、析构函数、以及用于输入矩阵、旋转和转置的方法。下面是一个简单的实现示例:
```cpp
#include <iostream>
#include <vector>
class MatrixOperations {
private:
std::vector<std::vector<int>> matrix;
public:
// 构造函数,接收矩阵的行数和列数,初始化为空矩阵
MatrixOperations(int rows, int cols) : matrix(rows, std::vector<int>(cols)) {}
// 输入矩阵
void inputMatrix() {
for (int i = 0; i < matrix.size(); ++i)
for (int j = 0; j < matrix[i].size(); ++j)
std::cin >> matrix[i][j];
}
// 显示矩阵
void displayMatrix() {
for (const auto& row : matrix) {
for (int elem : row) {
std::cout << elem << " ";
}
std::cout << "\n";
}
}
// 顺时针旋转90度
void rotateClockwise90() {
int n = matrix.size();
std::vector<std::vector<int>> rotated(n, std::vector<int>(n));
for (int i = 0; i < n; ++i)
for (int j = 0; j < n; ++j)
rotated[j][n - 1 - i] = matrix[i][j];
matrix = rotated;
}
// 转置矩阵
void transpose() {
int n = matrix.size();
for (int i = 0; i < n; ++i)
for (int j = i; j < n; ++j)
std::swap(matrix[i][j], matrix[j][i]);
}
// 显示旋转后的矩阵和转置后的矩阵
void showRotatedAndTransposed() {
rotateClockwise90();
displayMatrix("After rotation:\n");
transpose();
displayMatrix("After transposition:\n");
}
};
// 主函数演示如何使用
int main() {
int rows, cols;
std::cout << "Enter number of rows and columns: ";
std::cin >> rows >> cols;
MatrixOperations matOp(rows, cols);
matOp.inputMatrix();
matOp.showRotatedAndTransposed();
return 0;
}
```
在这个示例中,用户会被提示输入矩阵的尺寸,然后可以依次看到原始矩阵、旋转90度后的矩阵和转置后的矩阵。
阅读全文