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

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


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

ลงในแนวทแยงหมายถึงการพิมพ์อาร์เรย์ของขนาด n x n ใด ๆ โดยเลื่อนลงในแนวทแยงเช่นในรูปด้านล่าง -

พิมพ์เมทริกซ์ในแนวทแยงมุมลงในโปรแกรม 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 AND i < n AND 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 AND j < n AND 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

ตัวอย่าง

#include <stdio.h>
#define n 3
int diagonally_down(int mat[n][n]){
   int i, j, row, col;
   //printing above elements
   for (i = 0; i < n; i++){
      row = 0;
      col = i;
      while(col >= 0) //Moving downwards from the first row{
         printf("%d ", mat[row++][col--]);
      }
   }
   //printing below elements
   for (j = 1; j < n; j++){
      row = j;
      col = n-1;
      while(row<n) //Moving from the last column{
         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