このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1307166756/981
#  [1] 授業単元:C言語応用 
#  [2] 問題文(含コード&リンク):
#  キーボードから入力した数だけのロッカーを割り付け、各ロッカーにキーボードから入力したデータを保存し、最後に保存した内容を表示するプログラムkadai10-1.cを次のステップにしたがって作成せよ。 
#  但し、各ロッカーには次のロッカーへのポインター(次のロッカーの鍵と思えばわかりやすい)も荷物に相当するデータといっしょに保存するものとする。 
#  ./a.out 
#  3      説明:ロッカーの数を入力 
#  1 3 4         データ入力 
#  

'キーボードから入力した数だけのロッカーを割り付け、各ロッカーにキーボードから入力したデータを保存し、最後に保存した内容を表示する' :-
        キーボードから入力した数だけのロッカーを割り付け(_ロッカーならび),
        各ロッカーにキーボードから入力したデータを保存し(_ロッカーならび),
        最後に保存した内容を表示する(_ロッカーならび).

キーボードから入力した数だけのロッカーを割り付け(_ロッカーならび) :-
        キーボードから入力した数(_キーボードから入力した数),
        ロッカーを割り付け(_ロッカーならび).

キーボードから入力した数(_キーボードから入力した数) :-
        get_line(Line),
        キーボードから入力した数診断(Line,_キーボードから入力した数),!.
キーボードから入力した数(_キーボードから入力した数) :-
        キーボードから入力した数(_キーボードから入力した数).

キーボードから入力した数診断(Line,_キーボードから入力した数) :-
        atom_to_term(Line,_キーボードから入力した数),
        integer(_キーボードから入力した数),
        _キーボードから入力した数 > 0,!.
キーボードから入力した数診断(Line,_キーボードから入力した数) :-
        writef('入力された %t からロッカーの数が得られませんでした。再入力をお願いします。\n',[Line]),
        fail.

ロッカーを割り付け(_キーボードから入力した数,_ロッカーならび) :-
        length(_ロッカーならび,_キーボードから入力した数).

各ロッカーにキーボードから入力したデータを保存し(_ロッカーならび) :-
        readln(_入力したデータならび),
        データを保存(_入力したデータならび,_ロッカーならび).

データを保存(_入力したデータならび,_ロッカーならび) :-
        ロッカーは入力データより大きいか等しい(_入力したデータならび,_ロッカーならび),!.
データを保存(_入力したデータならび,_ロッカーならび) :-
        入力データの方がロッカーよりも多い場合は(_入力したデータならび,_ロッカーならび).

ロッカーは入力データより大きいか等しい(_入力したデータならび,_ロッカーならび) :-
        append(_入力したデータならび,_,_ロッカーならび).

入力データの方がロッカーよりも多い場合は(_入力したデータならび,_ロッカーならび) :-
        append(_ロッカーならび,_,入力したデータならび).

最後に保存した内容を表示する([]) :- !.
最後に保存した内容を表示する([_データ|R]) :-
        writef('%t\n',[_データ]),
        最後に保存した内容を表示する(R).