2013-12-11 2 views
-3

Так что я хочу перенести матрицу, и она отлично работает, но когда я пытаюсь переставить ее снова, она дает мне транспонированную матрицу и под ней оригинал, и я просто не могу понять, почему? Может быть, мой алгоритм ошибочен, но я не вижу в этом недостатка.Проблема при переносе матрицы дважды


#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;} 


} 
+1

Вы пробовали отлаживать? Кроме того, пожалуйста, отложите свой код правильно, как сейчас, он не читается. –

+1

Я не просматривал ваш код, но ... переносил матрицу, а затем переносил ее снова .. она дает исходную матрицу ... – bolov

+0

«Где моя ошибка» - для начала ваш заголовок не описателен. –

ответ

0

Этот код является довольно-много неосновательный. Начните с некоторой работы, чтобы сделать его чистым и понятным.

Поместите код, который переносит матрицу в отдельную функцию. Поместите код, который отображает содержимое матрицы в отдельную функцию. Поместите код, который устанавливает значение матрицы в отдельную функцию. Напишите main так, чтобы он вызывал соответствующие функции в соответствующем порядке.

Смежные вопросы