このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1305867431/236
#  [1]C言語初級課題 
#  [2]次のコードは、キーボードから0から9までの4つの数を 
#  受け取って小さい順から書き出すプログラムの未完成版である。 
#  コードを完成させなさい。fgetsでキーボードから文字列を受け取り、 
#  それをatoi関数で整数に変換し、0から9までの範囲にあるか確認し、 
#  範囲にない場合は再入力を促し再入力させること。 
#   
#  #include <stdio.h> 
#  #inckude <stdlib.h> 
#  int main(void){ 
#  char s[1024];//fgets関数に与える文字列バッファ 
#  char *t;//fgets戻り値格納用 
#  int n;//atoi関数の戻り値格納用 
#  { 
#  //この部分にコードを追加してコードを完成させてください。 
#  return(0); 
#  } 
#  [3] Windows 7/Microsoft SDK/C言語 
#  [4]5/31まで 
#  [5]簡単な課題だそうですが、手こずってます。どうかよろしくお願いします。 
# 
# 

キーボードから0から9までの4つの数を受け取って小さい順から書き出す :-
        length(L,4),
        キーボードから0から9までの4つの数を受け取って(L),
        小さい順に(L,L1),
        書きだす(L1).

キーボードから0から9までの4つの数を受け取って([]).
キーボードから0から9までの4つの数を受け取って([N|R]) :-
        get_char(A),
        atom_to_term(A,N,_),
        integer(N),
        N >= 0,
        N < 9,
        キーボードから0から9までの4つの数を受け取って(R).
キーボードから0から9までの4つの数を受け取って(L) :-
        キーボードから0から9までの4つの数を受け取って(L).

小さい順に(L1,L2) :-
        小さい順に(L1,[],L2).

小さい順に([],L,L) :- !.
小さい順に([N1|R1],[],L3) :-
        小さい順に(R1,[N1],L3),!.
小さい順に([N1|R1],[N2|R2],L3) :-
        N1 =< N2,
        小さい順に(R,[N1,N2|R2],L3).
小さい順に([N1|R1],[N2|R2],[N2|R3]) :-
        N1 > N2,
        小さい順に([N1|R1],R2,R3).

書きだす([]) :- nl.
書きだす([N|R]) :-
        write(N),
        書きだす(R).