このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1308749241/678
#  [1] 授業単元:C 
#  [2] 問題文(含コード&リンク): 
#  
#  つぎのプログラムにおいて,ratioavoeは,すべての要素が正である要素数Nの
#  int型の配列を引数として渡されると,
#  その配列中の奇数の要素の平均を偶数の要素の平均で割った値を返す関数である.
#  例えば,N = 5 で配列の各値が4, 7, 6, 2, 3の場合,奇数の要素は7, 3であり,
#  その平均は5.0,
#  偶数の要素は4, 6, 2であり,その平均は4.0となるので,ratioavoeは1.25を返す.
#  関数ratioavoeを,
#  下記のプログラムの /* INSERT HERE */ の部分に挿入できるように書け.
#  ただし,配列中に奇数の要素も偶数の要素もそれぞれ少なくとも
#  1 個は含まれるものと仮定して良い.
#  #include 
#  #define N (2以上の適当な正整数)
#  /* INSERT HERE */
#  
#  
#  int main(void)
#  {
#  int a[N];
#  /* ここで a[0]〜a[N-1] の値を入力する */
#  printf("ratioavoe = %8.4f\n", ratioavoe(a));
#  return 0;
#  } 

'すべての要素が正であるint型のならびを引数として渡されると,その配列中の奇数の要素の平均を偶数の要素の平均で割った値を返す'(_整数ならび,_奇数の要素の平均を偶数の要素の平均で割った値) :-
        奇数の平均値(_整数ならび,_奇数の平均値),
        偶数の平均値(_整数ならび,_偶数の平均値),
        _奇数の要素の平均を偶数の要素の平均で割った値 is _奇数の平均値 / _偶数の平均値.

奇数の平均値(_整数,_奇数の平均値) :-
        findavg(_整数ならび,(
                    append(_,[_整数|_],_整数ならび),
                    1 is abs(_整数) mod 2),
                _奇数の平均値).

偶数の平均値(_整数ならび,_奇数の平均値) :-
        findavg(_整数,(
                    append(_,[_整数|_],_整数ならび),
                    0 is _整数 mod 2),
                _偶数の平均値).