課題 [5] for 文(3/9)

問 3(提出プログラム名:ex0503.c)

2 つの実数 a と r,ならびに 1 つの整数 n を読み込み, 初項 a,公比 r の等比数列を第 n 項まで出力するプログラムを作りなさい.ただし,各項の値は小数点以下第 5 位までを出力するものとする.
なお, プログラムでは必ず for 文を使うこと.n は 1 以上であると仮定してプログラムを作ってよい.
提出するソースファイル(ソースプログラム)のファイル名は ex0503.c としなさい.

【ヒント】
基本的な構造はサンプルプログラム 2 と同じになります(データ型や計算式を変更すればほぼ完成).
サンプルプログラム2の場合は等差数列なので「公差 d を前の項に足す」ことを繰り返していました.
このプログラムの場合は等比数列なので「公比 r を前の項にかける」ことを繰り返せばよいです.

なお,初項と公比は最初から double 型であり,しかも割り算は登場しないのでキャストは不要です.

  • 【プログラムの実行結果】(その1)赤字は実行時にキーボードから入力する内容
    ※小数点以下の桁数が 5 桁になっているか確認せよ(無指定だと 6 桁になってしまう
初項:10
公比:0.9
項数:5
第 1 項 = 10.00000
第 2 項 = 9.00000
第 3 項 = 8.10000
第 4 項 = 7.29000
第 5 項 = 6.56100
  • 【プログラムの実行結果】(その2)赤字は実行時にキーボードから入力する内容
初項:3.14
公比:0.99
項数:1
第 1 項 = 3.14000
  • 【プログラムの実行結果】(その3)赤字は実行時にキーボードから入力する内容
初項:1.23
公比:-0.6
項数:4
第 1 項 = 1.23000
第 2 項 = -0.73800
第 3 項 = 0.44280
第 4 項 = -0.26568

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ a と r は double 型,n は int 型であるが,scanf でそれらを適切に指定(%lf%d の使い分け)できておらず,値を正しく読み込めていない.
実行の画面出力が上の例と違うきちんと確認していない).
 (例1)出力する値の小数点以下の桁数が違う.
 (例2)「第 k 項 =」といったかたちでアルファベット表記に固定されてしまっている.
■ 上のヒントを見落としていて,無駄に複雑なプログラムになっている.
 例えば,各項を求めるために for 文を二重ループで作っていたり,わざわざ double 型へのキャストを行ったりしている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


以上の 3 問は明日(5/10)の 16時までに提出を済ませてください.
(ex0501.c ~ ex0503.c を Moodle から提出してください.)
くれぐれも各問題で記載されている注意事項や「過去にあったミス」を見落とさないようにしてください.なお,コンパイルエラーや無限ループが含まれる場合は総合評価を 0 点とします.
提出後に間違いに気付いた場合,〆切前であれば差し替え(上書き)は可能です.


次のページ以降に問 4 ~問 9 があります.
問 4 以降を明日の16時までに早期提出した場合は加点の対象とします
(一部のみを早期提出してもよいです).
※なお,明らかに間違っている(まともに動かない)プログラムを早期提出するのは絶対にやめてください.不正に加点を得ようとした行為と見なして減点とします.

次の問題へ → [ 問4 (ex0504.c) ]