Computer >> Máy Tính >  >> Lập trình >> lập trình C

Làm thế nào để tính toán chuyển vị của một ma trận bằng chương trình C?

Chuyển vị của ma trận

Chuyển vị của ma trận là chuyển vị có các hàng là cột của ma trận ban đầu, tức là nếu A và B là hai ma trận sao cho các hàng của ma trận B là cột của ma trận A thì Ma trận B được cho là chuyển vị của Ma trận A.

Logic được sử dụng để thay đổi ma trận m (i, j) thành m (j, i) như sau -

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

Chương trình 1

Trong ví dụ này, chúng tôi sẽ in chuyển vị của ma trận bằng cách sử dụng vòng lặp for .

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

Đầu ra

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

Chương trình 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;
}

Đầu ra

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

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