Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

วิธีการคำนวณทรานสโพสของเมทริกซ์โดยใช้โปรแกรม C?


ทรานสโพสของเมทริกซ์

ทรานสโพสของเมทริกซ์คือแถวที่มีแถวเป็นคอลัมน์ของเมทริกซ์ดั้งเดิม นั่นคือ ถ้า A และ B เป็นเมทริกซ์สองตัว โดยที่แถวของเมทริกซ์ B เป็นคอลัมน์ของเมทริกซ์ A เมทริกซ์ B จะเรียกว่าทรานสโพสของ เมทริกซ์ A.

ตรรกะที่ใช้ในการเปลี่ยนเมทริกซ์ m(i,j) เป็น m(j,i) มีดังนี้ -

for (i = 0;i < m;i++)
   for (j = 0; j < n; j++)
      transpose[j][i] = matrix[i][j];

โปรแกรมที่ 1

ในตัวอย่างนี้ เราจะพิมพ์ทรานสโพสของเมทริกซ์โดยใช้ for loop .

#include <stdio.h>
int main(){
   int m, n, i, j, matrix[10][10], transpose[10][10];
   printf("Enter rows and columns :\n");
   scanf("%d%d", &m, &n);
   printf("Enter elements of the matrix\n");
   for (i= 0; i < m; i++)
      for (j = 0; j < n; j++)
         scanf("%d", &matrix[i][j]);
   for (i = 0;i < m;i++)
      for (j = 0; j < n; j++)
         transpose[j][i] = matrix[i][j];
   printf("Transpose of the matrix:\n");
   for (i = 0; i< n; i++) {
      for (j = 0; j < m; j++)
         printf("%d\t", transpose[i][j]);
      printf("\n");
   }
   return 0;
}

ผลลัพธ์

Enter rows and columns :
2 3
Enter elements of the matrix
1 2 3
2 4 5
Transpose of the matrix:
1    2
2    4
3    5

โปรแกรม 2

#include<stdio.h>
#define ROW 2
#define COL 5
int main(){
   int i, j, mat[ROW][COL], trans[COL][ROW];
   printf("Enter matrix: \n");
   // input matrix
   for(i = 0; i < ROW; i++){
      for(j = 0; j < COL; j++){
         scanf("%d", &mat[i][j]);
      }
   }
   // create transpose
   for(i = 0; i < ROW; i++){
      for(j = 0; j < COL; j++){
         trans[j][i] = mat[i][j];
      }
   }
   printf("\nTranspose matrix: \n");
   // print transpose
   for(i = 0; i < COL; i++){
      for(j = 0; j < ROW; j++){
         printf("%d ", trans[i][j]);
      }
      printf("\n");
   }
   return 0;
}

ผลลัพธ์

Enter matrix:
1 2 3 4 5
5 4 3 2 1

Transpose matrix:
1 5
2 4
3 3
4 2
5 1