C++ 将矩阵转置两次时出现问题

C++ 将矩阵转置两次时出现问题,c++,matrix,C++,Matrix,所以我想转置一个矩阵,它工作得很好,但当我再次尝试转置它时,它会给我转置后的矩阵,在它下面是原始矩阵,我就是不明白为什么?也许我的算法错了,但我不知道;我看不出它有什么缺点 这段代码几乎无法维护。首先要做一些工作,使它干净、清晰 将转换矩阵的代码放入一个单独的函数中。将显示矩阵内容的代码放入单独的函数中。将设置矩阵值的代码放入单独的函数中。编写main,以便它以适当的顺序调用适当的函数。是否尝试过调试?另外,请正确缩进你的代码,因为它现在是不可读的。我还没有看过你的代码,但是。。。变换矩阵,然后

所以我想转置一个矩阵,它工作得很好,但当我再次尝试转置它时,它会给我转置后的矩阵,在它下面是原始矩阵,我就是不明白为什么?也许我的算法错了,但我不知道;我看不出它有什么缺点


这段代码几乎无法维护。首先要做一些工作,使它干净、清晰


将转换矩阵的代码放入一个单独的函数中。将显示矩阵内容的代码放入单独的函数中。将设置矩阵值的代码放入单独的函数中。编写main,以便它以适当的顺序调用适当的函数。

是否尝试过调试?另外,请正确缩进你的代码,因为它现在是不可读的。我还没有看过你的代码,但是。。。变换矩阵,然后再变换一次。。它给出了原始矩阵…我的错误在哪里-首先,你的标题不是描述性的。
#include<iostream>
using namespace std;
const int red=100;
const int col=100;
int main ()
{
int n,m,i,j,x;
cin>>n>>m;
char p;

int a[red][col],b[red][col],c[red][col];
for(i=0;i<n;i++)
    for(j=0;j<m;j++)
{
    cin>>a[i][j];
}
cin>>p;
while(p=='t'){
if(n<m){
  for(i=0;i<m;i++){
for(j=0;j<m;j++)

{
    b[i][j]=a[j][i];
}}
x=m;
m=n;
n=x;
  for(i=0;i<n;i++){
    for(j=0;j<m;j++)
{
    c[i][j]=b[i][j];
    a[i][j]=c[i][j];
    cout<<a[i][j]<<" ";
}
cout<<endl;}}

if(n>m){
  for(i=0;i<n;i++){
for(j=0;j<n;j++)

{
    b[i][j]=a[j][i];
}}
x=m;
m=n;
n=x;
  for(i=0;i<n;i++){
    for(j=0;j<m;j++)
{    c[i][j]=b[i][j];
     a[i][j]=c[i][j];
    cout<<a[i][j]<<" ";
}
cout<<endl;}}
if(n==m)
   {for(i=0;i<n;i++)
for(j=0;j<m;j++)

{
    b[i][j]=a[j][i];
}
  for(i=0;i<n;i++){
    for(j=0;j<m;j++)
{    c[i][j]=b[i][j];
     a[i][j]=c[i][j];
    cout<<a[i][j]<<" ";
}
cout<<endl;}}
cin>>p;}


}