输入一个n行m列的矩阵A,输出它的转置AT。(c++)
时间: 2024-12-29 12:34:30 浏览: 17
在C++中,要计算一个矩阵A的转置AT,你可以创建一个新的矩阵B,其行数等于A的列数,列数等于A的行数。然后通过遍历A的每一个元素,将其放入对应位置的B矩阵中。下面是一个简单的示例代码:
```cpp
#include <iostream>
using namespace std;
// 定义矩阵类
class Matrix {
private:
int rows;
int cols;
int** data; // 二维数组存储矩阵
public:
Matrix(int r, int c) : rows(r), cols(c), data(new int*[rows]) {
for (int i = 0; i < rows; ++i) {
data[i] = new int[cols];
}
}
~Matrix() {
for (int i = 0; i < rows; ++i)
delete[] data[i]; // 释放内存
delete[] data;
}
void transpose() {
int temp;
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
temp = data[j][i]; // 交换原矩阵的行和列
data[j][i] = data[i][j];
data[i][j] = temp;
}
}
}
void print() {
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
cout << data[i][j] << " ";
}
cout << endl;
}
}
};
int main() {
int n, m;
cout << "Enter number of rows and columns (n x m): ";
cin >> n >> m;
Matrix A(n, m);
// 填充矩阵A
cout << "Enter elements of matrix A:" << endl;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
cin >> A.data[i][j];
}
}
A.transpose(); // 转置矩阵
cout << "Transpose of matrix A: " << endl;
A.print();
return 0;
}
```
在这个例子中,用户首先输入矩阵的尺寸和元素,然后程序会创建并转置这个矩阵,最后打印出转置后的矩阵。
阅读全文