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

การพิมพ์เมทริกซ์แบบแนวทแยงมุมลงในโปรแกรม C


เมื่อได้รับอาเรย์ขนาด n x n งานคือการพิมพ์องค์ประกอบของเมทริกซ์แบบจำนวนเต็มในแนวทแยงมุมลง

แนวทแยงมุมลงหมายถึงการพิมพ์อาเรย์ขนาด n x ใดๆ โดยเคลื่อนที่ลงในแนวทแยงมุม ตามภาพด้านล่าง:

การพิมพ์เมทริกซ์แบบแนวทแยงมุมลงในโปรแกรม C

จะพิมพ์ 1 ก่อน แล้วไปที่ 2 พิมพ์ แล้วลงทแยงมุมไปที่ 4 พิมพ์ ต่อไปเรื่อยๆ

ตัวอย่าง

Input: Matrix [3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }
Output: 1 2 4 3 5 7 6 8 9

อัลกอริทึม

int diagonally_down(int mat[n][n])
START
STEP 1: DECLARE i, j, row, col AS INT
STEP 2: LOOP FOR i = 0; i < n; i++
          SET row = 0
          SET col = i
          LOOP WHILE col >= 0
            PRINT mat[row][col]
            INCREMENT row BY 1 AND DECREMENT col BY 1
          END WHILE
        END FOR
STEP 3: LOOP FOR j = 1; j < n; j++
          SET row = j
          SET col = n-1
          LOOP WHILE row < n
            PRINT mat[row][col]
            INCREMENT row BY 1 AND DECREMENT col BY 1
          END WHILE
        END FOR
STOP

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

#include 
#define n 3
int diagonally_down(int mat[n][n]){
    int i, j, row, col;
    // พิมพ์องค์ประกอบด้านบน
    for (i = 0; i < n; i++){
        row = 0;
        col = i;
        while(col >= 0) // เคลื่อนลงจากแถวแรก
            printf("%d ", mat[row++][col--]);
    }
    // พิมพ์องค์ประกอบด้านล่าง
    for (j = 1; j < n; j++){
        row = j;
        col = n-1;
        while(row < n) // เคลื่อนจากคอลัมน์สุดท้าย
            printf("%d ", mat[row++][col--]);
    }
}
int main(int argc, char const *argv[]){
    int mat[][n] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };
    diagonally_down(mat);
    return 0;
}

ผลลัพธ์

การรันโปรแกรมจะได้ผลลัพธ์ดังนี้:

1 2 4 3 5 7 6 8 9