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

โปรแกรม C เพื่อจัดเรียงคอลัมน์และแถวของเมทริกซ์ทั้งหมด


ปัญหา

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

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

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

ตรรกะที่ใช้ เรียงลำดับแถวจากน้อยไปหามากมีดังนี้

for (i=0;i<m;++i){
   for (j=0;j<n;++j){
      for (k=(j+1);k<n;++k){
         if (ma[i][j] > ma[i][k]){
            a = ma[i][j];
            ma[i][j] = ma[i][k];
            ma[i][k] = a;
         }
      }
   }
}

ตรรกะที่ใช้ เรียงลำดับคอลัมน์จากมากไปหาน้อย เป็นดังนี้ −

for (j=0;j<n;++j){
   for (i=0;i<m;++i){
      for (k=i+1;k<m;++k){
         if (mb[i][j] < mb[k][j]){
            a = mb[i][j];
            mb[i][j] = mb[k][j];
            mb[k][j] = a;
         }
      }
   }
}

โปรแกรม

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

#include <stdio.h>
void main(){
   int i,j,k,a,m,n;
   static int ma[10][10],mb[10][10];
   printf ("Enter the order of the matrix \n");
   scanf ("%d %d", &m,&n);
   printf ("Enter co-efficients of the matrix \n");
   for (i=0;i<m;++i){
      for (j=0;j<n;++j){
         scanf ("%d",&ma[i][j]);
         mb[i][j] = 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");
   }
   printf ("After arranging rows in ascending order\n");
   for (i=0;i<m;++i){
      for (j=0;j<n;++j){
         for (k=(j+1);k<n;++k){
            if (ma[i][j] > ma[i][k]){
               a = ma[i][j];
               ma[i][j] = ma[i][k];
               ma[i][k] = a;
            }
         }
      }
   }
   for (i=0;i<m;++i){
      for (j=0;j<n;++j){
         printf (" %d",ma[i][j]);
      }
      printf ("\n");
   }
   printf ("After arranging the columns in descending order \n");
   for (j=0;j<n;++j){
      for (i=0;i<m;++i){
         for (k=i+1;k<m;++k){
            if (mb[i][j] < mb[k][j]){
               a = mb[i][j];
               mb[i][j] = mb[k][j];
               mb[k][j] = a;
            }
         }
      }
   }
   for (i=0;i<m;++i){
      for (j=0;j<n;++j){
         printf (" %d",mb[i][j]);
      }
      printf ("\n");
   }
}

ผลลัพธ์

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

Enter the order of the matrix
3 4
Enter co-efficient of the matrix
1
2
3
4
1
2
3
4
5
1
2
3
The given matrix is
1 2 3 4
1 2 3 4
5 1 2 3

After arranging rows in ascending order
1 2 3 4
1 2 3 4
1 2 3 5

After arranging the columns in descending order
5 2 3 4
1 2 3 4
1 1 2 3