このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1312201995/666
#  [1] 授業単元:C言語プログラミング  
#  [2] 問題文(含コード&リンク): 月の英語名を初期値とした文字列配列(大きさは12x10)を使って 
#  キーボードから月の英語名を入力しそれが何月かを表示するプログラムを作成せよ. 
#  実行例↓  
#  $./kadai 
#  Month? October 
#  October is 10 gatsu 
#   
#  $./kadai 
#  Month? May 
#  May is 5 gatsu 
#  

'月の英語名を初期値とした文字列配列(大きさは12x10)を作る' :-
        length(LL,12),
        findall(L,(
                    append(L0,[L|R],LL),
                    length(L,10),
                    length([_|L0],_nth),
                    write('%t月の英語名を入力してください : '),
                    get_line(Line),
                    atom_chars(Line,Chars),
                    append(Chars,_,L)),
                LL),
        assertz('月の英語名を初期値とした文字列配列(大きさは12x10)'(LL)).

'月の英語名を初期値とした文字列配列(大きさは12x10)を使ってキーボードから月の英語名を入力しそれが何月かを表示する' :-
        '月の英語名を初期値とした文字列配列(大きさは12x10)'(_文字列配列),
        キーボードから月の英語名を入力し(_月の英語名),
        それが何月かを(_月の英語名,_文字列配列,_月),
        表示する(_月).

キーボードから月の英語名を入力し(_月の英語名) :-
        write('月の英語名を入力してください : '),
        get_line(_月の英語名).

それが何月かを(_月の英語名,_文字列配列,_月) :-
        atom_chars(月の英語名,Chars),
        append(Chars,R,L),
        nth1(_月,_文字列配列,_月の英語名),
        すべてが変数(R),!.
それが何月かを(_月の英語名,_文字列配列,_月) :-
        writef('%tは英語の月名ではありません。\n',[_月の英語名]),
        fail.

表示する(_月) :-
        writef('%t月です\n',[_月]).

すべてが変数([]).
すべてが変数([V|R]) :-
        var(V),
        すべてが変数(R).

%  
%  C152_666.htmlとは違って、無理に文字列配列(大きさは12x10)に近い構造を
%  作ってみた。これでも、結局は処理はリストの先頭からだから、ここでの努力は
%  ほとんど無駄である。
%