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