このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 132代目 #148 # それほど長くないアドレス帳の製作をお願いします。 # アドレス帳に追加(_氏名,_電話番号ならび,_アドレス) :- assertz(アドレス帳(_氏名,_電話番号ならび,_アドレス)). アドレス帳から削除(_氏名,_電話番号ならび,_アドレス) :- retract(アドレス帳(_氏名,_電話番号ならび,_アドレス)). アドレス帳から重複削除(_氏名,_電話番号ならび,_アドレス) :- '現在定義されているアドレス帳から氏名、電話番号ならび、アドレスの定義を取りだす'(_氏名,_電話番号ならび,_アドレス,L), アドレス帳から重複削除(L,_氏名,_電話番号ならび,_アドレス). '現在定義されているアドレス帳から氏名、電話番号ならび、アドレスの定義を取りだす'(_氏名,_電話番号ならび,_アドレス,L) :- findall(アドレス帳(_氏名,_電話番号ならび,_アドレス), clause(アドレス帳(_氏名,_電話番号ならび,_アドレス),_),L). アドレス帳から重複削除(L,_氏名,_電話番号ならび,_アドレス) :- \+(L = [_,_|_]),!. アドレス帳から重複削除(L,_氏名,_電話番号ならび,_アドレス) :- '重複節を表示後、削除するかどうかの回答がyの時一つ残して他はすべて削除する'(L,_氏名,_電話番号ならび,_アドレス). '重複節を表示後、削除するかどうかの回答がyの時一つ残して他はすべて削除する'(L,_氏名,_電話番号ならび,_アドレス) :- '重複節を表示後、削除するかどうかの'(_氏名,_電話番号ならび,_アドレス,_回答), '回答がyの時一つ残して他はすべて削除する'(_回答,L). '重複節を表示後、削除するかどうかの'(_氏名,_電話番号ならび,_アドレス,_回答) :- writef('%w\t%w\t%w\nこの節を削除しますか y or n : ',[_氏名,_電話番号ならび,_アドレス]), 行入力(_回答). 行入力(_行) :- read_line_to_codes(current_input,_文字コードならび), atom_codes(_行,_文字コードならび). '回答がyの時一つ残して他はすべて削除する'(_回答,L) :- アドレス帳から重複削除の二(_回答,L). アドレス帳から重複削除の二(n,_) :- !. アドレス帳から重複削除の二(y,[_|R]) :- forall(member(P,R),retract(P)). アドレス帳を表示(_氏名) :- アドレス帳(_氏名,_電話番号ならび,_アドレス), writef('\n%w\w%w\w%w\w\n',[_氏名,_電話番号ならび,_アドレス]). アドレス帳のファイルへの保存(_ファイル名) :- tell(_ファイル名), listing(アドレス帳), told. アドレス帳のロード(_ファイル名) :- reconsult(_ファイル名).