このディレクトリの索引
#  出題場所 :: http://toro.2ch.net/test/read.cgi/tech/1381909900/561
#  n個の実数x(i)をキーボードから読み込み、それらの平均と標準偏差を出力するプログラムを作りなさい。ただし、n個の実数の平均を求める関数mean(size,x[ ])と標準偏差を求める関数stdev(size,x[ ])を定義し、これを用いること。 
#  がわかりませぬ。どなたか教えてください。 
# 
# 

'n個の実数x(i)をキーボードから読み込み、それらの平均と標準偏差を出力するプログラムを作りなさい。ただし、n個の実数の平均を求める関数mean(size,x[ ])と標準偏差を求める関数stdev(size,x[ ])を定義し、これを用いること。' :-
        'n個の実数x(i)をキーボードから読み込み、'(_n個,_n個の実数),
        'それらの平均と標準偏差を出力する'(_n個,_n個の実数).

'n個の実数x(i)をキーボードから読み込み、'(_n個,_n個の実数) :-
        length(_n個の実数,_n個),
        findall(_個々の実数,(
                    個々の実数(_n個の実数,_個々の実数),
                    実数を得る(_個々の実数)),
                _n個の実数).

'それらの平均と標準偏差を出力する'(_n個,_n個の実数) :-
        'n個の実数の平均を求める関数mean(size,x[ ])'(_n個,_n個の実数,_n個の実数の平均),
        'n個の実数の標準偏差を求める関数stdev(size,x[ ])'(_n個,_n個の実数,_n個の実数の標準偏差),
        writef('平均  = %t\n標準偏差 = %t\n',[_n個の実数の平均,_n個の実数の標準偏差).

'n個の実数の平均を求める関数mean(size,x[ ])'(_n個,_n個の実数,_n個の実数の平均) :-
        sum_list(_n個の実数,_n個の実数の合計),
        _n個の実数の平均 is _n個の実数の合計 / _n個.

'n個の実数の標準偏差を求める関数stdev(size,x[ ])'(_n個,_n個の実数,_n個の実数の標準偏差) :-
        'n個の実数の平均を求める関数mean(size,x[ ])'(_n個,_n個の実数,_n個の実数の平均),
        findsum(_個々の実数と平均の差の二乗,(
                    個々の実数(_n個の実数,_個々の実数),
                    _個々の実数と平均の差の二乗 is (_個々の実数 - _n個の実数の平均) ^ 2),
                _個々の実数と平均の差の二乗の合計),
        _n個の実数の標本の分散 is _個々の実数と平均の差の二乗の合計 / _n個,
        _n個の実数の標準偏差 is sqrt(_n個の実数の標本の分散).

個々の実数(_n個の実数,_個々の実数) :-
        nth1(_,_n個の実数,_個々の実数).

実数を得る(_個々の実数) :-
        get_line(Line),
        read_term_from_atom(Line,_実数,[]),
        実数診断(Line,_実数),!.
実数を得る(_個々の実数) :-
        実数を得る(_個々の実数).

実数診断(Line,_実数) :-
        float(_実数),!.
実数診断(Line,_実数) :-
        writef('入力された %t から実数が得られません。再入力をお願いします。\n',[Line]),
        fail.