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

โปรแกรม C สลับองค์ประกอบเส้นทแยงมุมของเมทริกซ์


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

สลับองค์ประกอบเส้นทแยงมุมหลัก (Main Diagonal) กับเส้นทแยงมุมรอง (Secondary Diagonal) ในเมทริกซ์สี่เหลี่ยมจัตุรัส (Square Matrix) ถ้าไม่ใช่ Square Matrix ให้แจ้งเตือน

ตรรกะการสลับ

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

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

#include <stdio.h>

main() {
    int i, j, m, n, a;
    static int ma[10][10];
    printf("Order m x n: "); scanf("%dx%d", &m, &n);
    if (m == n) {
        printf("Elements:\n");
        for (i = 0; i < m; i++)
            for (j = 0; j < n; j++)
                scanf("%d", &ma[i][j]);
        printf("Original:\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("After swap diagonals:\n");
        for (i = 0; i < m; i++) {
            for (j = 0; j < n; j++) printf(" %d", ma[i][j]);
            printf("\n");
        }
    } else {
        printf("Not a square matrix\n");
    }
}

ผลลัพธ์

Run 1: 3x3 matrix
1 2 3
4 5 6
7 8 9
→ After swap:
3 2 1
4 5 6
9 8 7

Run 2: 4x3 matrix → Not a square matrix