2014-12-04 6 views
-1

2 차원 (2D) 배열로 표현 된 5 행렬의 전치 행렬을 찾는 C 프로그램을 작성하는 방법을 알려주십시오. 이니셜 라이저 목록을 사용하여 원본 행렬에 아래에 표시된 요소로 2D 배열을 초기화합니다. 원래 행렬과 조 변경을 표시합니다. 프로그램에는 하나의 2D 배열 만 있어야합니다.행렬 2D 배열의 전치

예 :

원 행렬 행렬의

1 2 3 4  5 

6  7  8  9  10 

11  12  13  14  15 

16  17  18  19  20 

21  22  23  24  25 

트랜스는 :

1  6  11  16  21 

2  7  12  17  22 

3  8  13  18  23 

4  9  14  19  24 

5  10  15  20  25 
+1

는를 나타내는 일부 실제 코드를 보여주세요 매트릭스. – Codor

+0

매트릭스를 조 변경하려면? 어떻게 목록을 뒤집을 지 생각해보십시오. 끝날 때까지 일련의 스왑을 수행합니다. 행렬의 경우에 이것에 대해 생각해보십시오 : A [i, j] <-> A [j, i]. 거기에 중첩 된 루프의 냄새가 난다. –

답변

0

프로그램에 하나 개의 어레이가되어야하므로, 유효한 방법은 전치하는 것이다 다음 중첩 루프를 사용하여 수행 할 수 있습니다.

for(int i = 0; i < n; i++) 
{ 
    for (j = i+1; j < n; j++) // only the upper is iterated 
    { 
     swap(&(a[i][j]), &(a[j][i])); 
    } 
} 

다음 서브 루틴 int 포인터를 사용하는 교환을 수행한다. 위의 호출 코드에서 이들은 교환 할 요소의 주소를 사용하여 가져옵니다. 질문으로

void swap(int* arg1, int* arg2) 
{ 
    int buffer = *arg1; 
    *arg1 = *arg2; 
    *arg2 = buffer; 
} 
+1

인덱스 교환도 허용되지 않는다. : – FrancisDoy

+0

행렬을 적절한 위치에 조 변경하는 것이 유효 할까? 그렇다면 오른쪽 위 삼각형을 반복하고 대각선을 따라 항목을 바꿔서 수행 할 수 있습니다. 그러나 이것은 인덱스의 스와핑을 포함하지만 행렬 – Codor

+0

그래, 유효하다고 생각합니다 – FrancisDoy

0
int array[5][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}; 

//transpose 
cout<<"TRANSPOSE"<<endl; 
for(int i=0;i<=4;i++){ 
    for(int j=0;j<=4;j++) {  
    if(array[i]>array[j]){   
     int temp;    
     temp=array[i][j];    
     array[i][j]=array[j][i];     
     array[j][i]=temp; 
    }  
    } 
} 
0

묻습니다 만 조바꿈이 ... 그것은 쉽게해야 표시 합니다.

int matrix[5][5] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}; 
for(int i=0;i<5;i++) { 
    for (int j=0;j<5;j++) { 
     std::cout<<matrix[j][i]<<" "; 
    } 
    std::cout<<"\n"; 
} 

EDIT 1 : 주어진 행렬

3

트랜스 아래와 같이 계산 될 수의 printf과 COUT 대체 그것은 C 컴파일러 작업 얻을 :

#include<stdio.h> 
void main() 
{ 
    int c,r,i,j; 
    printf("Enter number of rows and columns : "); 
    scanf("%d %d",&r,&c); 
    int arr[r][c]; 
    for(i=0;i<r;i++) 
    { 
     for(j=0;j<c;j++) 
     { 
      printf("\nEnter element : "); 
      scanf("%d",&arr[i][j]); 
     } 
    } 
    printf("\nOriginal array is : \n"); 
    for(i=0;i<r;i++) 
    { 
     for(j=0;j<c;j++) 
     { 
      printf("%d\t",arr[i][j]); 
     } 
     printf("\n"); 

    } 
    printf("\nTranspose array is : \n"); 
    for(i=0;i<c;i++) 
    { 
     for(j=0;j<r;j++) 
     { 
      printf("%d\t",arr[j][i]); 
     } 
     printf("\n"); 

    } 
}