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

โปรแกรม C เพื่อแลกเปลี่ยนองค์ประกอบในแนวทแยงในเมทริกซ์ที่กำหนด


ปัญหา

เราจำเป็นต้องเขียนโค้ดเพื่อแลกเปลี่ยนองค์ประกอบแนวทแยงหลักกับองค์ประกอบแนวทแยงรอง ขนาดของเมทริกซ์ถูกกำหนดที่รันไทม์

หากขนาดของค่าเมทริกซ์ m และ n ไม่เท่ากัน ก็จะพิมพ์ว่าเมทริกซ์ที่ระบุไม่ใช่สี่เหลี่ยมจัตุรัส

มีเพียงเมทริกซ์สี่เหลี่ยมจัตุรัสเท่านั้นที่สามารถสลับองค์ประกอบหลักในแนวทแยง และสามารถสลับกับองค์ประกอบในแนวทแยงทุติยภูมิได้

วิธีแก้ปัญหา

วิธีแก้ปัญหาในการเขียนโปรแกรม C เพื่อแลกเปลี่ยนองค์ประกอบในแนวทแยงในเมทริกซ์ที่กำหนดมีดังนี้ -

ตรรกะในการแลกเปลี่ยนองค์ประกอบในแนวทแยง อธิบายไว้ด้านล่าง -

for (i=0;i<m;++i){
   a = ma[i][i];
   ma[i][i] = ma[i][m-i-1];
   ma[i][m-i-1] = a;
}

ตัวอย่าง

ต่อไปนี้เป็นโปรแกรม C เพื่อ เปลี่ยนองค์ประกอบแนวทแยงในเมทริกซ์ที่กำหนด

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

ผลลัพธ์

เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −

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