課題 [11] ポインタ①(6/9)

問 6(提出プログラム名:ex1106.c)

このプログラム(ex1106.c)をダウンロードし,その中の関数 grow を完成させなさい

このプログラムは,ある生物の成長をシミュレーションするものとなっている.
その生物は前日の x % 増しのペースで毎日体重が増え続けているという(ただし,x は正の整数).
関数 grow は,この成長をシミュレーションし,今日の体重を表した変数の値を n 日後の体重に書き換えるものとする.
【関数 grow の各引数】
 ● pw: double 型変数へのポインタ.参照先の変数に成長前の体重が格納してある.
    関数の実行時には,このポインタを介して体重を書き換える
 ● n:シミュレーションする日数(ただし,n は 0 以上の整数とする).
 ● a:成長率(前日の何倍になるかを表した実数.例えば 10% 増しならば 1.1 として与える)

この問題では関数 main の内容は一切書き換えないこと.

【注意】
最初に入力する「x %増し」の x は整数であり,関数 grow に与える成長率 a はこれを加工したものになるが,その加工は既に main 関数の中に書いてあるので気にしなくてよい.
(例えば x = 10 の場合は a = 1.1 となるようにしてある)

なお,関数 grow戻り値を持たないので戻り値型は void と宣言してある.
これを変更してはいけませんし,戻り値を持たせても(return を書いても)いけません.

【ヒント】
関数 grow の中で扱う体重と成長率はいずれも double 型の実数なので,キャストを行う必要はありません

  • 【プログラムの実行結果】(その1)赤字は実行時にキーボードから入力する内容
その生物の体重を入力してください:2.5
前日の何%増しになるか入力してください:10
何日後の体重をシミュレーションしますか:20

現在 2.50 [kg] の生物ですが,20 日後の体重は 16.82 [kg] と予想されます.
  • 【プログラムの実行結果】(その2)赤字は実行時にキーボードから入力する内容
その生物の体重を入力してください:1.3
前日の何%増しになるか入力してください:8
何日後の体重をシミュレーションしますか:100

現在 1.30 [kg] の生物ですが,100 日後の体重は 2859.69 [kg] と予想されます.
  • 【プログラムの実行結果】(その3)赤字は実行時にキーボードから入力する内容
その生物の体重を入力してください:2
前日の何%増しになるか入力してください:5
何日後の体重をシミュレーションしますか:0

現在 2.00 [kg] の生物ですが,0 日後の体重は 2.00 [kg] と予想されます.

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
実行の画面出力が上の例と違うきちんと確認していない).
 例えば,実行例3だけが違っている等.
■ 関数 grow の中で不必要にキャストが行われている.
main 関数を書き換えてしまっている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない)


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