問 2(提出プログラム名:ex1202.c)
このプログラム(ex1202.c)をダウンロードし,その中の関数 fill_geometric を完成させなさい.
関数 fill_geometric は,指定された配列の内容を初項 a,公比 r の等比数列で埋めるものとする.
なお,この関数の引数は次の 3 つである:
p:書き換え対象の配列を参照するポインタ
a:初項
r:公比
ただし,配列の長さはマクロ SIZE で定義されている.
【注意】
関数 main の内容は一切書き換えないこと.
あわせて,配列の長さについてはマクロ SIZE を使うものとし,5 といったこれに関連する数字を直接書いてはいけません.
【ヒント】
第 n 項の値は,第 n-1 項の値に r をかければ求まります.
扱う数値はすべて実数(double型)なので,キャストの必要はありません.
なお,配列の添字として有効な範囲は 0 以上 SIZE 未満(SIZE-1 以下)なので,この範囲外の要素(p[-1] や p[SIZE])にアクセスしてしまうことの無いよう for 文や while 文での制御変数の初期値や繰り返しの条件に注意してください.
具体的には,
for ( i = 0; i < SIZE; i++ )
と書いた場合には i = 0 の時に p[i-1] が p[-1] になってしまうこと,
for ( i = 1; i <= SIZE; i++ )
と書いた場合には i = SIZE の時に p[i] が p[SIZE] になってしまうこと(いずれも誤りです)にそれぞれ注意してください.
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
大きさ 5 の配列を等比数列で埋めます.⏎ 初項と公比を入力してください:5.5 1.1 x[0] = 5.500⏎ x[1] = 6.050⏎ x[2] = 6.655⏎ x[3] = 7.321⏎ x[4] = 8.053⏎
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
大きさ 5 の配列を等比数列で埋めます.⏎ 初項と公比を入力してください:3.14 -1 x[0] = 3.140⏎ x[1] = -3.140⏎ x[2] = 3.140⏎ x[3] = -3.140⏎ x[4] = 3.140⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 実行の画面出力が上の例と違う(きちんと確認していない).
■ 不要なキャストが行われている.
■ 繰り返しの中で配列の範囲外(p[-1] や p[SIZE])を読み書きしてしまっている.
■ 注意書きを見落としていて main 関数の中身を書き換えてしまっている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
← [ 問 1 (ex1201.c) ]
ミスが無いことを確認したら次の問題へ → [ 問3 (ex1203.c) ]