Computer >> Máy Tính >  >> Lập trình >> lập trình C

In ma trận theo đường chéo xuống dưới trong C Program.

Cho với một mảng có kích thước n x n và nhiệm vụ là in các phần tử ma trận kiểu số nguyên theo đường chéo xuống dưới.

Theo đường chéo xuống dưới có nghĩa là in mảng có kích thước bất kỳ là n x n theo đường chéo di chuyển xuống dưới như trong hình bên dưới -

In ma trận theo đường chéo xuống dưới trong C Program.

Đầu tiên, nó sẽ in 1 và sau đó chuyển sang in 2 và di chuyển xuống 4 theo đường chéo và in nó, v.v.

Ví dụ

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

Thuật toán

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

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy chương trình trên thì nó sẽ tạo ra kết quả sau -

1 2 4 3 5 7 6 8 9