#include <iostream>
using namespace std;
int **getTranspose(int **list, int rows, int columns)
{
//创建一个newRow-newCol的转置矩阵
int newRow = columns, newCol = rows;
int **trans = new int*[newRow];
for (int i = 0; i < newRow; i++)
trans[i] = new int[newCol];
//进行转置
//按转置矩阵的行和列遍历
for (int i = 0; i < newRow; i++)
{
for (int j = 0; j < newCol; j++)
trans[i][j] = list[j][i];//新矩阵的行元素 等于 原矩阵的列元素
}
或者按原矩阵的行和列循环遍历
//for (int i = 0; i < rows; i++)
//{
// for (int j = 0; j < columns; j++)
// trans[j][i] = list[i][j];//新矩阵的列元素 等于 原矩阵的行元素
//}
return trans;
}
int main()
{
//请输入矩阵的行和列
cout << "请输入矩阵的行和列:" << endl;
int rows = 0, columns = 0;
cin >> rows >> columns;
cout << "请输入矩阵的各元素:" << endl;
int **list = new int*[rows];
for (int i = 0; i < rows; i++)
{
list[i] = new int[columns];
for (int j = 0; j < columns; j++)
cin >> list[i][j];
}
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
cout<< list[i][j]<<" ";
cout << endl;
}
cout << "\n转置之后的矩阵为:" << endl;
int ** transpose = getTranspose(list, rows, columns);
for (int i = 0; i < columns; i++)
{
for (int j = 0; j < rows; j++)
cout << transpose[i][j]<<" ";
cout << endl;
}
return 0;
}
矩阵的转置
最新推荐文章于 2024-01-09 01:21:01 发布