利用c++完成:输入一个2x3矩阵,利用指针将矩阵逆时针旋转90度输出
时间: 2024-11-03 17:17:44 浏览: 12
矩阵运算-基于C++实现的矩阵运算之求逆矩阵.zip
在C++中,可以使用二维数组和指针来完成矩阵的逆时针旋转90度操作。以下是实现该功能的一个简单示例:
```cpp
#include <iostream>
// 定义矩阵结构体,包含行数、列数和指向元素的指针
struct Matrix {
int rows, cols;
int** data; // 指向元素的指针
};
// 创建新的矩阵
Matrix createMatrix(int r, int c) {
Matrix matrix;
matrix.rows = r;
matrix.cols = c;
matrix.data = new int*[r];
for (int i = 0; i < r; ++i) {
matrix.data[i] = new int[c];
for (int j = 0; j < c; ++j)
matrix.data[i][j] = 0; // 初始化为0
}
return matrix;
}
// 矩阵逆时针旋转90度
void rotateMatrix(Matrix& matrix) {
int t = matrix.rows - 1; //临时变量存储旧的行数
for (int row = 0; row < t; ++row) { //从第一行开始遍历到倒数第二行
for (int col = row; col < matrix.cols; ++col) { //从当前行的第一个元素到当前列的最后一个元素交换
int temp = matrix.data[row][col]; //保存元素值
matrix.data[row][col] = matrix.data[t-col][row]; //新位置元素赋值
matrix.data[t-col][row] = matrix.data[t-row][t-col]; //第二个新位置元素赋值
matrix.data[t-row][t-col] = matrix.data[col][t-row]; //第三个新位置元素赋值
matrix.data[col][t-row] = temp; //恢复原始元素值
}
}
}
// 打印矩阵
void printMatrix(const Matrix& matrix) {
for (int i = 0; i < matrix.rows; ++i) {
for (int j = 0; j < matrix.cols; ++j)
std::cout << matrix.data[i][j] << " ";
std::cout << "\n";
}
}
int main() {
int r, c;
std::cout << "Enter the number of rows and columns for the matrix: ";
std::cin >> r >> c;
Matrix inputMatrix = createMatrix(r, c);
std::cout << "Enter the elements of the matrix:\n";
// 输入矩阵元素
rotateMatrix(inputMatrix); // 旋转矩阵
std::cout << "Rotated matrix is:\n";
printMatrix(inputMatrix);
// 清理内存
for (int i = 0; i < inputMatrix.rows; ++i)
delete[] inputMatrix.data[i];
delete[] inputMatrix.data;
return 0;
}
```
在这个程序中,我们首先创建一个二维数组表示矩阵,并通过`rotateMatrix`函数实现逆时针旋转。注意,在实际应用中,为了节省内存,你应该在不需要矩阵数据时删除分配的动态内存。
阅读全文