問 2(提出プログラム名:ex1302.c)
このプログラム(ex1302.c)をダウンロードし,その中の関数 write_divisors を完成させなさい.
関数 write_divisors は,指定されたファイルへ x 以上 y 以下の整数をすべて書き込むものとする.
ただし,その中で z の約数にあたるものだけは [ ] で囲んで書き込むものとする.
なお,この関数の引数は次の 4 つである:
fp:書き込み対象のファイルを参照しているファイルポインタ
x:書き込む整数の最小値
y:書き込む整数の最大値
z : 約数判定の対象となる整数
この問題では,x, y, z はいずれも 1 以上の整数であり,なおかつ x < y であって y < z であると仮定してプログラムを作ってよい.
【注意】
関数 main の内容は一切書き換えないこと.
【ヒント】
ひとまずファイルへの書き込みは後回しにしておいて,
まずは通常の printf を使って整数を画面に出力するかたちのプログラムを作り,動作確認するとよいです.
その後,printf(...); を fprintf(fp, ...); に書き換えればよいでしょう.
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
出力先のファイルの名前を入力してください:data.txt 3 つの整数を入力してください:10 20 60 10 以上 20 以下の整数を data.txt に書き込みました.⏎ ただし,60 の約数だけは [ ] で囲んであります.⏎【実行例1でdata.txtに書き込まれる内容】
[10]⏎ 11⏎ [12]⏎ 13⏎ 14⏎ [15]⏎ 16⏎ 17⏎ 18⏎ 19⏎ [20]⏎
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
※[ ] で囲まれる値が 44 の約数になっているか確認せよ(実行例 1 とは異なる)
出力先のファイルの名前を入力してください:data.txt 3 つの整数を入力してください:20 25 44 20 以上 25 以下の整数を data.txt に書き込みました.⏎ ただし,44 の約数だけは [ ] で囲んであります.⏎【実行例2でdata.txtに書き込まれる内容】
20⏎ 21⏎ [22]⏎ 23⏎ 24⏎ 25⏎
- 【プログラムの実行結果】(その3)※赤字は実行時にキーボードから入力する内容
※[ ] で囲まれる値が 20 の約数になっているか確認せよ(実行例 1 とは異なる)
出力先のファイルの名前を入力してください:data.txt 3 つの整数を入力してください:10 11 20 10 以上 11 以下の整数を data.txt に書き込みました.⏎ ただし,20 の約数だけは [ ] で囲んであります.⏎【実行例3でdata.txtに書き込まれる内容】
[10]⏎ 11⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 書き込まれるファイルの内容が上の例と違う(きちんと確認していない).
■ 約数が [ ] で囲まれていない.
■ 注意書きを見落としていて main 関数の中身を書き換えてしまっている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
← [ 問 1 (ex1301.c) ]
ミスが無いことを確認したら次の問題へ → [ 問3 (ex1303.c) ]