このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1357748713/78
#  [1] 授業単元:C言語 
#  [2] 問題 http://ime.nu/codepad.org/yV0KrZox 
#  
#  問題3
#  配列に次の10個のデータが格納されている。
#  2,-8,5,-4,6,5,7,-3,-9,-1
#  奇数、偶数、負の数がそれぞれいくつあるかを数え、表示するプログラムを作成しなさい。
#  ---------------------------------------------------------------------
#  奇数 = 6 偶数 = 4 負の数 = 4
#  ---------------------------------------------------------------------
#  

'ならびに次の10個のデータが格納されている。2,-8,5,-4,6,5,7,-3,-9,-1 奇数、偶数、負の数がそれぞれいくつあるかを数え、表示する' :-
        'ならびに次の10個のデータが格納されている。
2,-8,5,-4,6,5,7,-3,-9,-1'(_ならび),
        '奇数、偶数、負の数がそれぞれいくつあるかを数え、表示する'(_ならび).
表示する'(_ならび).

'ならびに次の10個のデータが格納されている。2,-8,5,-4,6,5,7,-3,-9,-1'([2,-8,5,-4,6,5,7,-3,-9,-1]).

'奇数、偶数、負の数がそれぞれいくつあるかを数え、表示する'(_ならび) :-
        '奇数、偶数、負の数がそれぞれいくつあるかを数え'(_ならび,0,0,0,_奇数,_偶数,_負の数),
        表示する(_奇数,_偶数,_負の数).

'奇数、偶数、負の数がそれぞれいくつあるかを数え'([],奇数,_偶数,_負の数,_奇数,_偶数,_負の数).
'奇数、偶数、負の数がそれぞれいくつあるかを数え'([_数|R],奇数_1,_偶数_1,_負の数_1,_奇数,_偶数,_負の数) :-
        '奇数、偶数、負の数の更新'(_数,奇数_1,_偶数_1,_負の数_1,_奇数_2,_偶数_2,_負の数_2),
        '奇数、偶数、負の数がそれぞれいくつあるかを数え'(R,奇数_2,_偶数_2,_負の数_2,_奇数,_偶数,_負の数).

'奇数、偶数、負の数の更新'(_数,奇数_1,_偶数_1,_負の数_1,_奇数_2,_偶数_2,_負の数_2) :-
        '奇数・偶数'(_数,_奇数_1,_奇数_2,_偶数_1,_偶数_2),
        負の数(_数,_負の数_1,_負の数_2).

'奇数・偶数'(_数,_奇数,_奇数,_偶数_1,_偶数_2) :-
        偶数(_数),
        _偶数_2 is _偶数_1 + 1,!.
'奇数・偶数'(_,_奇数_1,_奇数_2,_偶数,_偶数) :-
        _奇数_2 is _奇数_1 + 1.

負の数(_数,_負の数,_負の数) :-
        _数 >= 0,!.        
負の数(_数,_負の数_1,_負の数_2) :-
        _数 < 0,
        _負の数_2 is _負の数_1 + 1.

偶数(_数) :-
        0 is _数 mod 2.

表示する(_奇数,_偶数,_負の数) :-
        writef('奇数 : %t\n偶数 : %t\n負の数 : %t\n',[_奇数,_偶数,_負の数]).