課題 [12] ファイル処理(6/9)

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

このプログラム(ex1206a.c)をダウンロードし,以下の動作をするプログラムとして仕上げなさい.

このプログラムは,出力先となるファイルの名前(256 文字未満)と整数 x を読み込み,
そのファイルへ x 以下の素数をすべて書き込むものとする.
ただし,整数の書き込みでは 1 個ずつ改行すること.
なお,素数の判定には is_prime という関数を用意しているのでそちらを使うこと.

【注意】
この問題では関数 is_prime の内容は一切書き換えないこと.

【注意すべき点(間違いやすいポイント)】
次の点に注意してください.例年,ここを見落としてやり直しになる人が多いです.
● ファイルのオープンではエラー処理も忘れずに書くこと.
● ファイルへの書き込み終了後には,必ずファイルのクローズを忘れないこと.
● ある整数 k が素数かどうかは次のように判定できます(過去の内容の復習)
  if ( is_prime(k) ){ ...
● この問題では x 以下の素数を書き込むことになるので,x そのものが素数の場合も対象に含まれます.

  • 【プログラムの実行結果】(その1)赤字は実行時にキーボードから入力する内容
出力先のファイル名を入力してください:data.txt
正の整数 1 つ入力してください:20
20 以下の素数を data.txt に書き込みました.
【実行例1でdata.txtに書き込まれる内容】
2
3
5
7
11
13
17
19
  • 【プログラムの実行結果】(その2)赤字は実行時にキーボードから入力する内容
出力先のファイル名を入力してください:data.txt
正の整数 1 つ入力してください:3
3 以下の素数を data.txt に書き込みました.
【実行例2でdata.txtに書き込まれる内容】
2
3

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
実行の画面出力と書き込み先のファイルの内容が上の例と違うきちんと確認していない).
■ 注意すべき点として警告されていた誤りに該当している.
関数 is_prime を書き換えてしまっている.
■ 素数判定の関数 is_prime を使わず,わざわざ同じ処理を自前で書こうとしている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


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