このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1286978599/290
#  [1] 授業単元:C言語基礎実習  
#  [2] 問題文(含コード&リンク):三つの数値を入力して昇順に並べ替えるプログラムを作成しなさい。 
#  ただし、並べ替えの処理は関数「void sort(int *n1,int *n2,int *n3)」 
#  というものを作って処理すること 
#   
#  

三つの数値を入力して昇順に並べ替える :-
        数値入力(N1),
        数値入力(N2),
        数値入力(N3),
        sort(N1,N2,N3,L),
        write_formatted('%t,%t,%t -> %t,%t,%t\n',[N1,N2,N3|L]).

sort(N1,N2,N3,[N1,N2,N3]) :-
        N1 =< N2,
        N2 =< N3,!.
sort(N1,N2,N3,L) :-
        N2 < N1,
        sort(N2,N1,N3,L),!.
sort(N1,N2,N3,L) :-
        N3 < N2,
        sort(N1,N3,N2,L),!.

数値入力(I) :-
        write('数を入力してください(終了するには0未満の数を入力) : '),
        get_line(Line),
        数値入力診断(Line,I),!.
数値入力(I) :- 数値入力(I).

数値入力診断(Line,I) :- atom_to_term(Line,I,_),number(I),!.
数値入力診断(Line,I) :-
        write_formatted('入力された %t から適切な数が得られませんでした\n再入力をお願いします\n',[Line]),fail.