練習 [13] ファイル処理(2/5)

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

まず,このプログラム(p1302.c)をダウンロードしなさい.
p1302.c はサンプルプログラム2(sample2.c)を編集して等比数列をファイルへ書き込もうとした途中のもの(未完成)である.これを完成させなさい
<注意>上のプログラムでは if 文の中で fopen もまとめて書いてある
例年,これに気付かずに fopen を新たに書き足すという間違いをする人が多いので注意せよ.

【目的の処理】
 (1)データファイルには等比数列を書き込む
   ただし,扱う数値はすべて実数(double型)とし,書き込む際の桁数指定は不要である.
 (2)等比数列の初項,公比,項数は実行時にキーボードから入力するものとし,
   実行例のように画面に出力する.
   ただし,初項と公比は実数(double型),項数は整数(int型)とする.

なお,この問題では入力される項数は 1 以上であると仮定してプログラムを作ってよい.
ただし,項数の上限は決まっていないので等比数列を表すのに double 配列を使ってはいけません
また,べき乗を計算する標準ライブラリ関数として pow というものがあるが,これを使ってもいけません.

【ヒント】
ここでは,求めたい等比数列の初項を a,公比を r,項数を n として,
これから出力する第 k 項(k = 1n)を x で表した場合を考えます.
当然ながら第 1 項は a ということになりますので,最初は x = a; とやっておけばよいです.
そして,第 2 項以降については,1 つ前の項(= x)に r をかけたものを改めて x とするという単純な繰り返しだけで求まります.
したがって,そのような繰り返しの中で fprintf を使って x をファイルへ書き出していけばよいです.

  • 【プログラムの実行例】(その1)赤字は実行時にキーボードから入力する内容
    ※画面に出力される初項や公比,項数が間違っていないか確認せよ.
出力先のファイル名を入力してください:data2.txt
初項,公比,項数をそれぞれ入力してください:100 0.95 5
data2.txt に
  初項 100.000000
  公比 0.950000
の等比数列(項数 5)を書き込みました
【実行例1でdata2.txtに書き込まれる内容】
※data2.txt に書き込まれた内容が以下の例と全く同じになっているか必ず確認せよ.
100.000000
95.000000
90.250000
85.737500
81.450625
  • 【プログラムの実行例】(その2)赤字は実行時にキーボードから入力する内容
出力先のファイル名を入力してください:data2.txt
初項,公比,項数をそれぞれ入力してください:100 0.95 1
data2.txt に
  初項 100.000000
  公比 0.950000
の等比数列(項数 1)を書き込みました
【実行例2でdata2.txtに書き込まれる内容】
100.000000

【過去にあったミス(減点となり,やり直しを命じられる)】
2 種類の実行例を確認せずに提出してしまっている.
 (例1)ファイルへ書き込まれる数列が1個ズレてしまっている.
 (例2)画面に表示される初項や公比,項数が違っている.
■ 注意書きを見落としていて,等比数列を double 配列に格納しようとしている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


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