このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1267796762/604
#  【 課題 】label5 に,もう一つのlabel を追加し,新しいラベルに 
#             正解数(累積で計算),および正解率(累積で計算) 
#             をするように改造してみよう. 
#  【 形態 】1. Javaアプリケーション 
#  【 GUI  】1. AWTのみ 
#  【 期限 】明日午前中 
#  【 Ver  】java version "1.5.0_09" 
#  【 補足 】正解数と正解率のlabelは作ってあります。 
#  ソースです 
#  http://ime.nu/www.dotup.org/uploda/www.dotup.org1278921.zip.html 
#   
#  eclipseを使って作っているのですが、 
#  わからないので急ですがよろしくお願いします。 
# 

問(1,'17+25=?',[37,43,47],3).
問(2,日本の都道府県の数は?,[37,43,47],3).
問(3,日本一大きな湖があるのは?,[千葉,滋賀,佐賀],2).

すべての問題に解答して問題数、正解数、正解率を得る(_問題数,_正解数,_正解率) :-
        findcount(問(_,_,_),_問題数),
        findcount(( for(1,_問題番号,_問題数),
                    問題に答える(_問題番号,_問題文,_選択文ならび,_正解,_解答),
                    解答診断(_選択文ならび,_正解,_解答,正解)),
               _正解数),
        _正解率 is _正解数 / _問題率 * 100,!.

問題に答える(_問題番号,_問題文,_選択文ならび,_正解,_解答) :-
        問(_問題番号,_問題文,_選択文ならび,_正解),
        write_formatted('問題 %t \n'),
        解答番号を選択する(_選択文ならび,_解答).

解答番号を選択する(_選択文ならび,_解答) :-
        選択文表示([_],_選択文ならび),
        write('答えは? '),
        get_Line(Line),
        解答番号を選択診断(Line,_解答),!.
解答番号を選択する(_選択文ならび,_解答) :- 解答番号を選択する(_選択文ならび,_解答).

解答番号を選択診断(Line,_解答) :-
        atom_to_term(Line,_解答,_),
        integer(_解答),!,
        解答番号の範囲診断(Line,_解答).
解答番号を選択診断(Line,_解答) :-
        write_formatted('入力された %t は整数ではありません。再入力をお願いします。\n',[Line]),
        fail.

解答番号の範囲診断(_解答) :-
        _解答 >= 1,
        _解答 =< 3,!.
解答番号の範囲診断(_解答) :-
        write_formatted('入力された解答%tは選択番号にありません。再入力が必要です。\n',[_解答]),
        fail.

選択文表示(Ln,[]) :- !.
選択文表示(Ln,[_文|R]) :-
        length(Ln,N),
        write_formatted('%t .. %t\n',[N,_文]),
        選択文表示([_|Ln],R).

解答診断(_選択文ならび,_正解,_正解,正解) :-
        write('正解です!!!\n'),!.
解答診断(_選択文ならび,_正解,_解答,不正解) :-
        \+(_正解=_解答),
        list_nth(_正解,_選択文ならび,_正解文),
        write_formatted('不正解です!!! 正解は %t..%t でした。\n',[_正解,_正解文]),!.