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

โปรแกรม C เรียงแถวและคอลัมน์ของเมทริกซ์


คำอธิบายปัญหา

เรียงแถว (Rows) แบบ Ascending (น้อยไปมาก) และเรียงคอลัมน์ (Columns) แบบ Descending (มากไปน้อย) ขนาดและองค์ประกอบรับจากผู้ใช้

ตรรกะการเรียง

  • Rows Ascending: สำหรับแต่ละแถว ใช้ Bubble Sort แถวเดียว
  • Columns Descending: สำหรับแต่ละคอลัมน์ ใช้ Bubble Sort คอลัมน์เดียว (เปรียบเทียบแนวตั้ง)

โค้ดตัวอย่าง

#include <stdio.h>

void main() {
    int i, j, k, a, m, n;
    static int ma[10][10], mb[10][10];
    printf("Order of matrix (m n): "); scanf("%d %d", &m, &n);
    printf("Elements:\n");
    for (i = 0; i < m; i++)
        for (j = 0; j < n; j++) {
            scanf("%d", &ma[i][j]);
            mb[i][j] = ma[i][j]; // copy สำหรับเรียงคอลัมน์
        }
    // เรียงแถว Ascending
    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;
                }
    // เรียงคอลัมน์ Descending
    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;
                }
    // แสดงผล (略)
}

ผลลัพธ์ตัวอย่าง

Input 3x4:
1 2 3 4
1 2 3 4
5 1 2 3

Rows Ascending:
1 2 3 4
1 2 3 4
1 2 3 5

Columns Descending:
5 2 3 4
1 2 3 4
1 1 2 3