練習 [6] 配列(2/5)

練習 2(提出プログラム名:p0602.c)

サンプルプログラム 2 (sample2.c)p0602.c という別の名前のファイルにコピーしなさい.そして,p0602.c を編集して以下の例のように実行できるプログラムを作りなさい.
なお,この問題では必ず配列を使うこととし,配列の宣言ではその長さをマクロ SIZE を使って指定すること.ただし,SIZE の値は 10 と定義しなさい.

このプログラムでは SIZE 個の整数を読み込んでそれらを配列 a へ格納し,その後,別の配列 b へ a とは逆の順番で格納している.そして,実行例のように配列 a と配列 b の内容を出力させている.

【注意】
この問題では
 #define SIZE 10
というマクロの定義以外の場所では 10 と書いてはいけませんSIZE と書くこと).
同様に SIZE-1 に該当する箇所で 9 と書いてもいけません

【ヒント】
サンプルプログラム2では SIZE が 5 なのでまずはこれを 10 に書き換えてください.
続いて,for 文による繰り返しでは b[i] = a[i]; を適切に書き換える必要があります.
具体的には,
   a[0] を代入する先は b[SIZE-1] ということになり,
   a[1] を代入する先は b[SIZE-2] ということになります.
   以下同様です.
したがって,これを一般化して,a[i] を代入する先はどうなるか?を考えるのが重要です.

  • 【プログラムの実行例】(その1)赤字は実行時にキーボードから入力する内容
    ※最初に出力する「10 個の整数を入力してください:」の 10 の部分は %dSIZE を使って出力させる必要があるので間違えないこと.
10 個の整数を入力してください: 
97 5 0 -2 81 4 -6 13 -9 8
  a  b
------
 97  8
  5 -9
  0 13
 -2 -6
 81  4
  4 81
 -6 -2
 13  0
 -9  5
  8 97
  • 【プログラムの実行例】(その2)赤字は実行時にキーボードから入力する内容
10 個の整数を入力してください:
1 2 3 4 5 6 7 8 9 10
  a  b
------
  1 10
  2  9
  3  8
  4  7
  5  6
  6  5
  7  4
  8  3
  9  2
 10  1

【過去にあったミス(減点となり,やり直しを命じられる)】
2 種類の実行例を確認せずに提出してしまっている.
マクロを使わず,プログラムの中で直接 10 や(SIZE-1 ではなく)9 と書いてしまっている.
■ マクロ SIZE が 5 のままになっている(この問題では 10 なのでサンプルプログラムとは異なる)
■ 代入すべき位置(配列の添字)がずれている
 配列の添字は 0 で始まるので,1 番目の数字は a[0]b[0] であり,最後の数字
 は a[SIZE-1]b[SIZE-1] になるが,これが 1 だけずれていて,a[1] を 1 番目と
 みなしていたり,b[SIZE] を最後の数字とみなしていたりする.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


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