このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1328276597/929
#  よろしくお願いします 
#   
#  [1] 授業単元: C言語 
#  [2] 問題文(含コード&リンク):  
#  ひとつの英文をキーボードから入力し、その単語数と文字数を出力 
#  するプログラムを作成せよ。 
#  

'ひとつの英文をキーボードから入力し、その単語数と文字数を出力する' :-
        'ひとつの英文をキーボードから入力し'(_英文),
        'その単語数と文字数を出力する'(_英文).

'ひとつの英文をキーボードから入力し'(_英文) :-
        write('英文を入力して下さい : '),
        'キーボードからEOFになるまで文字ならびを得る'(_文字ならび),
        concat_atom(_文字ならび,_英文).

'キーボードからEOFになるまで文字ならびを得る'([]) :-
        at_end_of_stream(user_input),!.
'キーボードからEOFになるまで文字ならびを得る'([_文字|R]) :-
        get_char(_文字),
        'キーボードからEOFになるまで文字ならびを得る'(R).

'その単語数と文字数を出力する'(_英文) :-
        sPLIT(_英文,[' ',',',':',';','.'],L),
        単語数(L,_単語数),
        文字数(Line,_文字数),
        writef('単語数は%t, 文字数は%tです。\n',[_単語数,_文字数]).

単語数([],0).
単語数([A|R],_単語数) :-
        \+(member(A,[' ',',',':',';','.'])),
        単語数(R,_単語数_1),
        _単語数 is _単語数_1 + 1,!.
単語数([A|R],_単語数) :-
        member(A,[' ',',',':',';','.']),
        単語数(R,_単語数).

文字数(Line,_文字数) :-
        atom_length(Line,_文字数).