このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1296387672/580
#  [1]授業単元:プログラミング 
#  [2]問題文 
#  担当者名が"end"になる迄、担当者名と売上を入力する。売上合計を求める。 
#  [3]環境 
#   [3.1]OS:Windows 
#    [3.2]コンパイラ名 Borland C++ compiler 5.5 
#   [3.3]言語:C 
#  [4]期限:無期限 
#   

'担当者名が"end"になる迄、担当者名と売上を入力する。売上合計を求める。' :-
        abolish(担当者別売上/2),
        担当者名と売上を入力する(_担当者名,_売上),
        '担当者名が"end"になる迄、担当者名と売上を入力する。売上合計を求める。'(_担当者名,_売上),!.
'担当者名が"end"になる迄、担当者名と売上を入力する。売上合計を求める。' :-
        担当者別売上合計の表示,
        売上合計の表示.

担当者名と売上を入力する(_担当者名,_売上) :-
        write('担当者名を入力してください : '),
        get_line(_担当者名),
        \+(_担当者名 = 'END'),
        write('売上を入力してください : '),
        get_integer(_売上),!.

'担当者名が"end"になる迄、担当者名と売上を入力する。売上合計を求める。'(_担当者名,売上) :-
        assertz(担当者別売上(_担当者名,_売上)),
        担当者名と売上を入力する(_担当者名2,_売上2),
        '担当者名が"end"になる迄、担当者名と売上を入力する。売上合計を求める。'(_担当者名2,売上2).

担当者別売上合計の表示 :-
        findsetof(_担当者,(
                    担当者別売上(_担当者,_)),
                  _担当者ならび),
        append(_,[_担当者|R],_担当者ならび),
        findsum(_売上,担当者別売上(_担当者,_売上),_担当者別売上合計),
        wr('担当者:%t,売上合計:%t\n',[_担当者,_担当者別売上合計]),
        R = [].

売上合計の表示 :-
        findsum(_売上,担当者別売上(_,_売上),_売上合計),
        write_formatted('総売上合計は %t です。\n',[_売上合計]).