ปัญหา
เขียนโค้ดเพื่อจัดเรียงแถวของเมทริกซ์ทั้งหมดโดยเรียงลำดับจากน้อยไปมาก และทุกคอลัมน์ในลำดับจากมากไปน้อย ผู้ใช้กำหนดขนาดของเมทริกซ์และองค์ประกอบของเมทริกซ์ ณ รันไทม์
วิธีแก้ปัญหา
วิธีแก้ปัญหาในการจัดเรียงแถวของเมทริกซ์ในลำดับจากน้อยไปมาก และคอลัมน์ทั้งหมดจากมากไปหาน้อยในภาษาการเขียนโปรแกรม 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