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

練習 1(提出プログラム名:p1301.c)

まず,このプログラム(p1301.c)をダウンロードしなさい.
p1301.c ではサンプルプログラム 1 (sample1.c) を元にして数当てゲームを作ろうとしている.
以下の点に注意して,これを完成させなさい.

【サンプルプログラム 1 との違い】
 ● データファイルに書いてあった整数(便宜上,x とする)は画面に表示させないこと.
 ● 次の処理(1),(2)を正解するまで繰り返すこと(※いったん while(1) で無限ループにしておくとよい):
  (1)何回目の入力なのかを画面に表示させた後(実行例を参照),
    整数を 1 つ(キーボードから)読み込む(便宜上,y とする).
  (2)xy が等しければ「正解です」と表示して繰り返しを終了する(break を使うとよい).
    x < y ならば「もっと小さいです」と表示し,逆ならば「もっと大きいです」と表示する.

【注意】
例年,上の (1) の処理について,毎回「1 回目」と表示させてしまうというミスが多い.
(去年は 10 人もいました.)これに該当しないようくれぐれも注意せよ.

【データファイルの自動生成】
自分でデータファイルを用意して数当てゲームをやってもつまらないと思うので,乱数を使ってデータを自動的に作り出すプログラムをこちらで用意している.
このプログラム(make_data1.c)をダウンロードしてコンパイルし,次のように実行せよ(※Mac の人は a ではなく ./a.out となる):
  a > data1.txt
すると,適当な値(1 ~ 1000 の間)がファイル data1.txt へ書き込まれる.

【ヒント】
繰り返しの処理では,事前に繰り返しを行う回数が分かりませんので while(1) でいったん無限ループにしておいてx == y の場合に break; でループを脱出するという方法をとるとよいでしょう.

  • 【プログラムの実行例】(その1)赤字は実行時にキーボードから入力する内容
    ※出力する回数が毎回「1 回目」になってしまっていないか注意せよ.
データファイル名を入力してください:data1.txt
1 回目:整数を入力してください:100
もっと大きいです
2 回目:整数を入力してください:150
もっと小さいです
3 回目:整数を入力してください:125
もっと小さいです
4 回目:整数を入力してください:115
もっと大きいです
5 回目:整数を入力してください:120
もっと大きいです
6 回目:整数を入力してください:122
もっと大きいです
7 回目:整数を入力してください:124
もっと小さいです
8 回目:整数を入力してください:123
正解です!

※この例はあくまでも答えが 123 の場合です.

  • 【プログラムの実行例】(その2)赤字は実行時にキーボードから入力する内容
データファイル名を入力してください:data1.txt
1 回目:整数を入力してください:123
正解です!

※この例はあくまでも答えが 123 の場合です.

【過去にあったミス(減点となり,やり直しを命じられる)】
上の指示に従った動作になっていない.
■ ヒントを見落としていて,プログラムが必要以上に複雑になっている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


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