このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1294061094/277
#  [1] 授業単元:プログラミング言語(C) 
#  [2] 問題文(含コード&リンク): 
#  Cプログラミングの基礎[新訂版]発行:サイエンス社 著:蓑原隆より 
#  P48 3.1 3.2 3.3 3.4  P55 4.1 P88 5.1 P104 6.1 6.2 
#  http://ime.nu/upload.jpn.ph/upload/img/u72273.jpg 
#  http://ime.nu/upload.jpn.ph/upload/img/u72276.jpg 
#  http://ime.nu/upload.jpn.ph/upload/img/u72274.jpg 
#  http://ime.nu/upload.jpn.ph/upload/img/u72275.jpg 
#  
#  5.1 成績データとして最初に学生数が入力され、続いてその数だけ
#  0から100までの成績が入力される。入力された成績の、合計、平均、
#  標準偏差を表示するプログラムを作成せよ。ただし、学生数は100を
#  越えないものとする。

'成績データとして最初に学生数が入力され、続いてその数だけ0から100までの成績が入力される。入力された成績の、合計、平均、標準偏差を表示するプログラムを作成せよ。ただし、学生数は100を越えないものとする。' :-
        write('学生の数を入力してください : '),
        get_integer(_学生の数),
        _学生の数 =< 100,
        length(L,_学生の数),
        その数だけ0から100までの成績が入力される(L),
        合計(L,_合計),
        平均(L,_平均),
        標準偏差(L,_平均,_標準偏差),
        write_formatted('入力された成績の合計は%t,平均は%t,標準偏差は%tです。\n',[_合計,_平均,_標準偏差).

合計(L,_合計) :-
        加算(L,_合計).

平均(L,_平均) :-
        相加平均(L,_平均).

標準偏差(L,_平均,_標準偏差) :-
        length(L,_学生の数),
        標準偏差(L,_学生の数,_平均,0.0,_標準偏差).        

標準偏差([],N,M,S,V) :-
        V is sqrt(S / (N - 1)),!.
標準偏差([A|R],N,M,S,V) :-
        S1 is (A - M) ^ 2,
        S2 is S + S1,
        標準偏差(R,N,M,S2,V).