所以我想转置一个矩阵,它工作正常,但是当我试图再次移调它时,它给了我转置矩阵,在它下面是原始的,我只是无法弄清楚为什么?也许我的算法错了,但我不知道它的缺陷。
#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;}
}
答案 0 :(得分:0)
这段代码非常难以维护。首先要做一些工作,使其干净清晰。
将用于转置矩阵的代码放入单独的函数中。将显示矩阵内容的代码放入单独的函数中。将设置矩阵值的代码放入单独的函数中。写main
以便它以适当的顺序调用适当的函数。