このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1289913298/654
#  内容: 
#  1] 授業単元:cプログラミング 
#  [2] クイズゲームを作成する。 
#  ファイル入出力についてどれだけ理解しているかを確かめる。 
# 
#  画面上に問題を一文ずつ表示し、番号を入力させ答えさせる。
#  結果をtxtファイルで出力する。
#  なお、問題文はtxtファイルを作成しそれを読み込んで表示させる。

'画面上に問題を一文ずつ表示し、番号を入力させ答えさせる。結果をtxtファイルで出力する。'(_問題ファイル名,_解答ファイル名) :-
        open(_問題ファイル,read,Instream),
        open(_解答ファイル,write,Outstream),
        '出題して、解答を得る。それを解答を解答ファイルに書き込む(問題ファイルが終了するまで繰り返す)'(Instream,Outstream),
        close(Outstream),
        close(Instream).

'出題して、解答を得る。それを解答を解答ファイルに書き込む(問題ファイルが終了するまで繰り返す)'(Instream,Outstream) :-
        一問読み込む(Instream,_問題),
        '出題して、解答を得る。それを解答を解答ファイルに書き込む(問題ファイルが終了するまで繰り返す)'(Instream,Outstream,_問題).

'出題して、解答を得る。それを解答を解答ファイルに書き込む(問題ファイルが終了するまで繰り返す)'(Instream,Outstream,end_of_file) :- !.
'出題して、解答を得る。それを解答を解答ファイルに書き込む(問題ファイルが終了するまで繰り返す)'(Instream,Outstream,_問題) :-
        問題を提示して解答を得る(_問題,_解答),
        問題と解答を書き込む(Outstream,_問題,_解答),
        一問読み込む(Instream,_問題2),
        '出題して、解答を得る。それを解答を解答ファイルに書き込む(問題ファイルが終了するまで繰り返す)'(Instream,Outstream,_問題2).


一問読み込む(Instream,_問題) :-
        get_line(Instream,Line),
        一問読み込む(Instream,Line,_問題行ならび),
        concat_atom(_問題行ならび,'\n',_問題),!.

一問読み込む(_,'',[]) :- !.
一問読み込む(Instream,Line,[Line|R]) :-
        get_line(Instream,Line2),
        一問読み込む(Instream,Line,R).

問題を提示して解答を得る(_問題,_解答) :-
        write_formatted('%t\n',[_問題]),
        解答を得る(_解答).

解答を得る(_解答) :- get_line(_解答),!.

問題と解答を書き込む(Outstream,_問題,_解答) :-
        write_formatted(Outstream,'%t\n%t\n\n',[_問題,_解答]),!.