Cプログラムで行列を斜め下向きに印刷します。
サイズnxnの配列が与えられ、タスクは整数型の行列要素を対角線下に印刷することです。
斜め下向きとは、下の図のように、任意のサイズのnxnの配列を斜め下向きに印刷することを意味します-
最初に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
-
Cプログラムの指定された行列のゼロの数でソートされた列のインデックスを出力します。
サイズNxMの配列が与えられ、N行数とM列数であり、タスクは、任意の列に存在するゼロの数に基づいてソート操作を実行した後、対応する行列のすべての列のゼロの数を出力することです。 たとえば、1番目の st 列には1つのゼロと2つのndが含まれます 列にゼロと3番目のrdが含まれていません 列に2つのゼロが含まれている場合、結果は− 312になります。 例 Input: 0 0 0 1 1 1 1 0 1 Output: 1 3 2 説明 注 −マトリックスはインデックス1から開始したと見なされます。 例
-
コーナー要素とその合計をCプログラムの2次元行列に出力します。
サイズが2X2の配列を考えると、配列に格納されているすべてのコーナー要素の合計を出力することが課題になります。 行「r」と列「c」が0から行と列を開始する行列mat[r][c]を想定すると、そのコーナー要素は次のようになります。 mat [0] [0]、mat [0] [c-1]、mat [r-1] [0]、mat[r-1][c-1]。ここでのタスクは、これらのコーナー要素を取得し、それらのコーナー要素を合計することです。つまり、mat [0] [0] + mat [0] [c-1] + mat [r-1] [0] + mat [r-1] [c-1]、結果を画面に印刷します。 例 Input