Так что я хочу перенести матрицу, и она отлично работает, но когда я пытаюсь переставить ее снова, она дает мне транспонированную матрицу и под ней оригинал, и я просто не могу понять, почему? Может быть, мой алгоритм ошибочен, но я не вижу в этом недостатка.Проблема при переносе матрицы дважды
#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;}
}
Вы пробовали отлаживать? Кроме того, пожалуйста, отложите свой код правильно, как сейчас, он не читается. –
Я не просматривал ваш код, но ... переносил матрицу, а затем переносил ее снова .. она дает исходную матрицу ... – bolov
«Где моя ошибка» - для начала ваш заголовок не описателен. –