このディレクトリの索引
#  [1] 授業単元:プログラム設計 
#  [2] 問題文:以下の条件で売り上げ集計プログラムを作りなさい。 
#   ・クラスを用いる(困難なら構造体で可) 
#   ・店舗毎に名前・売り上げを入力し、平均、標準偏差を計算 
#   ・売り上げ毎に店舗を並び替える 
#   ・店舗数は任意。 
#   ・並び替えは簡単でよい。店舗数が少ない場合、単純に比較するだけでよい。 
#  [3] コンパイラ名とバージョン: Microsoft Visual C++
#  [4] 言語:C
#  [5] その他の制限: 特にありません。

'店舗(店舗数は任意)毎に名前・売り上げを入力し、平均、標準偏差を計算する'(_平均,_標準偏差) :-
        abolish(売り上げ/2),
        '店舗(店舗数は任意)毎に名前・売り上げを入力し',
        '平均、標準偏差を計算する'(_平均,_標準偏差),
        売り上げ毎に店舗を並び替える.

'店舗(店舗数は任意)毎に名前・売り上げを入力し' :-
        店舗数は任意(_店舗数),
        length(Ln,_店舗数),
        '店舗(店舗数は任意)毎に名前・売り上げを入力し'(Ln,_店舗数).

'店舗(店舗数は任意)毎に名前・売り上げを入力し'(Ln,_店舗数) :-
        append(L0,[_|R],Ln),
        '店舗名・売り上げを入力'(L0,_店舗数,_店舗名,_売り上げ),
        assertz(売り上げ(_店舗名,_売り上げ)),
        R = [].

'店舗名・売り上げを入力'(L0,_店舗数,_店舗名,_売り上げ) :-
        length([_|L0],_何番目),
        writef('%t/%t番目の 店舗名,売り上げをカンマ区切りで入力してください : ',[_何番目,_店舗数]),
        readln([_店舗名,_売り上げ]).

店舗数は任意(_店舗数) :-
        write('店舗数を入力してください : '),
        get_integer(_店舗数).

'平均、標準偏差を計算する'(_平均,_標準偏差) :-
        findall(_売り上げ,(
                    売り上げ(_,_売り上げ)),
                L),
        相加平均(L,_平均),
        標準偏差(L,_標準偏差).

売り上げ毎に店舗を並び替える :-
        売り上げ毎に(_降順売り上げならび),
        店舗を並び替える(_降順売り上げならび).

売り上げ毎に(_降順売り上げならび) :-
        findall([_売り上げ,_店舗名],(
                    売り上げ(_店舗名,_売り上げ)),
                _売り上げならび),
        sort(_売り上げならび,_昇順売り上げならび),
        reverse(_昇順売り上げならび,_降順売り上げならび).

店舗を並び替える(_降順売り上げならび) :-
        abolish(売り上げ/2),
        append(_,[[_売り上げ,_店舗名]|R],_降順売り上げならび),
        assertz(売り上げ(_店舗名,_売り上げ)),
        R = [].


相加平均/2
標準偏差/2