このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1258158172/588 
#  [1] 授業単元:Cプログラミング演習 
#  [2] 問題文(含コード&リンク):http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10211.txt 
# 
# 課題(1) 
# 4つの整数を入力し、その最大値、最小値、平均を求める関数を各自で定義し出力するプログラムを書け。 
# 
# 課題(2) 
# 任意の数字と桁数を入力し、桁数に該当する整数を出力する関数を各自で定義し結果を出力するプログラムを書け。 
# 例えば数字に123456789と入力し、桁数を5とした場合下5桁の5を出力する関数。 
# 
# 課題(3) 
# 課題(1)の整数を配列形式で定義し、同様に最大値、最小値、平均値を出力するプログラムを書け。 
# (余力があれば分散も考えてみよ) 

'4つの整数を入力し、その最大値、最小値、平均を求める' :- 
    '4つの整数を入力し、その最大値、最小値、平均を求める'(_最大値,_最小値,_平均値), 
    write_formatted('最大値=%t,最小値=%t,平均値=%t\n',[_最大値,_最小値,_平均値]). 

'4つの整数を入力し、その最大値、最小値、平均を求める'(_最大値,_最小値,_平均値) :- 
    findall(N,(for(1,M,4),get_integer(N)),L), 
    max(L,_最大値), 
    min(L,_最小値), 
    avg(L,_平均値).

% Prolog それとも、入力は関数の引数として取るべきなのだろうか。 
% Prologの場合、インタプリタだから、 

'4つの整数を入力し、その最大値、最小値、平均を求める'(_整数1,_整数2,_整数3,_整数4,_最大値,_最小値,_平均値) :- 
    integer(_整数1),integer(_整数2),integer(_整数3),integer(_整数4), 
    max([_整数1,_整数2,_整数3,_整数4],_最大値), 
    min([_整数1,_整数2,_整数3,_整数4],_最小値), 
    avg([_整数1,_整数2,_整数3,_整数4],_平均値). 

% とする方がいいのかもしれない。write_formatted/2で標準出力への印字はProlog本来のスタイルではない