Vấn đề
Chúng ta cần viết một đoạn mã để hoán đổi các phần tử đường chéo chính với các phần tử đường chéo phụ. Kích thước của ma trận được cung cấp trong thời gian chạy.
Nếu kích thước của các giá trị m và n không bằng nhau thì nó sẽ in ra rằng ma trận đã cho không phải là một hình vuông.
Chỉ ma trận vuông mới có thể hoán đổi các phần tử đường chéo chính và có thể hoán đổi với các phần tử đường chéo phụ.
Giải pháp
Giải pháp để viết một chương trình C để hoán đổi các phần tử đường chéo trong ma trận đã cho như sau -
Lôgic để trao đổi các phần tử đường chéo được giải thích bên dưới -
for (i=0;i<m;++i){ a = ma[i][i]; ma[i][i] = ma[i][m-i-1]; ma[i][m-i-1] = a; }
Ví dụ
Sau đây là chương trình C để hoán đổi các phần tử đường chéo trong ma trận đã cho -
#include<stdio.h> main (){ int i,j,m,n,a; static int ma[10][10]; printf ("Enter the order of the matrix m and n\n"); scanf ("%dx%d",&m,&n); if (m==n){ printf ("Enter the co-efficients of the matrix\n"); for (i=0;i<m;++i){ for (j=0;j<n;++j){ scanf ("%d",&ma[i][j]); } } printf ("The given matrix is \n"); for (i=0;i<m;++i){ for (j=0;j<n;++j){ printf (" %d",ma[i][j]); } printf ("\n"); } for (i=0;i<m;++i){ a = ma[i][i]; ma[i][i] = ma[i][m-i-1]; ma[i][m-i-1] = a; } printf ("Matrix after changing the \n"); printf ("Main & secondary diagonal\n"); for (i=0;i<m;++i){ for (j=0;j<n;++j){ printf (" %d",ma[i][j]); } printf ("\n"); } } else printf ("The given order is not square matrix\n"); }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
Run 1: Enter the order of the matrix m and n 3x3 Enter the co-efficient of the matrix 1 2 3 4 5 6 7 8 9 The given matrix is 1 2 3 4 5 6 7 8 9 Matrix after changing the Main & secondary diagonal 3 2 1 4 5 6 9 8 7 Run 2: Enter the order of the matrix m and n 4x3 The given order is not square matrix