このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1307166756/929
#  [1] 授業単元:C  
#  [2] 問題文(含コード&リンク):  
#  strcmp()を利用し、../test/read.cgi/tech/1307166756/904で利用したものと同様のimput.txtを読み込む。  
#  キーボードから英単語を1つ入力し、その単語が、input.txtに何個含まれるかを出力するプログラムを作成しなさい。
#  

'キーボードから英単語を1つ入力し、その単語が、input.txtに何個含まれるかを出力するプログラムを作成しなさい' :-
        'キーボードから英単語を1つ入力し'(_英単語),
        'その単語が、input.txtに何個含まれるかを出力する'(_英単語).

'キーボードから英単語を1つ入力し'(_英単語) :-
        get_line(_英単語).

'その単語が、input.txtに何個含まれるかを出力する'(_英単語) :-
        'input.txtを読み込む'(LL),
        何個含まれるか(LL,_英単語,_何個),
        出力する(_英単語,_何個).

'input.txtを読み込む'(LL) :-
        see('input.txt'),
        readln(X,_終了状態),
        'input.txtを読み込む'(X,_終了状態,LL),
        seen,!.

'input.txtを読み込む'(_,end_of_file,[]) :- !.
'input.txtを読み込む'(A,_,[A|R]) :-
        readln(B,_終了状態2),
        'input.txtを読み込む'(B,_終了状態2,R).

何個含まれるか(LL,_英単語,_何個) :-
        flatten(LL,L),
        count(member(_英単語,L),_何個).

出力する(_英単語,_何個) :-
        writef('%t はinput.txt中に %t個含まれます。\n',[_英単語,_何個]).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

count(P,N) :-
        findsum(1,P,F),
        N is truncate(F).

findsum(_選択項,_項,_合計値) :-
        findall(_選択項,_項,_値ならび),
        sum(_値ならび,_合計値),!.

sum([],0) :- !.
sum([N|R],X) :-
        sum(R,Y),
        X is N + Y.

% split/3の定義