課題 [6] 配列(8/9)

問 8(提出プログラム名:ex0608.c)

サンプルプログラム 5 と同様に 2 次元配列を使って行列を表すことを考える.
この問題では,行列の行数と列数はいずれも SIZE であるとする(SIZE はマクロで定義).
そして,以下に示す実行例のように行列の左上の要素から順番に整数を読み込み,それらを行列のかたちで表示するプログラムを作成しなさい.ただし,次の点に注意しなさい:
 ● 行列内の各要素(整数)は 4 桁分の幅で表示させること.
 ● 各行の末尾にはその行の合計値( ) 付きで載せること(こちらの桁数指定は不要).
 ● マクロ SIZE の値は 3 と定義すること.
提出するソースファイル(ソースプログラム)のファイル名は ex0608.c としなさい.

このプログラムではマクロの定義部分を除いて 3 や 2 と直接書いてはいけません

【ヒント】
<入力について>
行列の各要素を 2 次元配列へ順々に格納していくやり方はサンプルプログラム 5 と同じです.
つまり,for 文を 2 重に書いて,その中で scanf による整数の入力を行えばよいことになります.

<各行での要素の合計について>
次のように行列の (i,j) 要素を表示しながら合計も求めるとよいでしょう:
  for ( i = 0; i < SIZE; i++ )  i 行目の処理
  {
    sum = 0;            i 行目の合計値をこれから計算するので初期化
    for ( j = 0; j < SIZE; j++ )  i 行目の中の j 列目の処理
    {
      sum += 「(i,j) 要素」;
      (i,j) 要素を出力;    ← 4 桁分の幅 “%4d” で出力すること
    }
    sum を ( ) 付きで表示して改行;
  }

  • 【プログラムの実行結果】(その1)赤字は実行時にキーボードから入力する内容
    行列の各要素は 4 桁分の幅(例えば 1 となっているか)確認せよ.
    ただし,行末の合計値については桁数の指定は不要である.
行列の各要素を入力してください:
1 2 3 4 5 6 7 8 9
   1   2   3 (6)
   4   5   6 (15)
   7   8   9 (24)
  • 【プログラムの実行結果】(その2)赤字は実行時にキーボードから入力する内容
行列の各要素を入力してください:
1 1 1 1 1 1 1 1 1
   1   1   1 (3)
   1   1   1 (3)
   1   1   1 (3)
  • 【プログラムの実行結果】(その3)赤字は実行時にキーボードから入力する内容
行列の各要素を入力してください:
1 1 1 0 1 1 0 0 1
   1   1   1 (3)
   0   1   1 (2)
   0   0   1 (1)

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
実行の画面出力が上の例と違うきちんと確認していない).
  (例1)表示されている数値の順序が違っている.
  (例2)合計値が違っている.
  (例3)合計値の出力に際して ( ) を書いていない
  (例4)表示させる桁(横幅)が問題文の指示と違っている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


ミスが無いことを確認したら次の問題へ → [ 問9 (ex0609.c) ]