このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1339338438/190
#  [1] プログラミング入門 
#  [2]  
#   
#  課題1 a[5] ={1, 3, 5, 2, -1} であるとき最も大きい値と小さい値を表示するプログラムを作成する。 
#   
#  課題2 a[2][2] = {{1,2},{3,4}},  b[2][1]={{1},{3}} のとき行列aとbを掛け算した結果a*b を出力する。(難しいかな?) 
#   
#  [環境] 
#  [3.1] OS:windows  
#  [3.2] コンパイラ名とバージョン:Microsoft Visual studio 2010  
#  [3.3] 言語:C++  
#  [4] 期限: 6月19日 21:00まで  
#   

'課題1 a[5] ={1, 3, 5, 2, -1} であるとき最も大きい値と小さい値を表示する' :-
        最も大きい値と小さい値を([1,3,5,2,-1],_最も大きい値,_最も小さい値),
        表示する(_最も大きい値,_最も小さい値).

最も大きい値と小さい値を([N],N,N).
最も大きい値と小さい値を([N|R],_最も大きい値,_最も小さい値) :-
        最も大きい値と小さい値を(R,_最も大きい値_1,_最も小さい値_1),
        最も大きい値と小さい値の評価(N,_最も大きい値_1,_最も小さい値_1,_最も大きい値,_最も小さい値).

最も大きい値と小さい値の評価(N,_最も大きい値_1,_最も小さい値,N,_最も小さい値) :-
        N > _最も大きい値_1,!.
最も大きい値と小さい値の評価(N,_最も大きい値,_最も小さい値_1,_最も大きい値,N) :-
        N < _最も小さい値_1,!.
最も大きい値と小さい値の評価(_,_最も大きい値,_最も小さい値,_最も大きい値,_最も小さい値).

表示する(_最も大きい値,_最も小さい値) :-
        writef('最も大きい値 = %t, 最も小さい値 = %t\n',[_最も大きい値,_最も小さい値]).