このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1294061094/644
#  [1] 授業単元:プログラミング演習第一 
#  [2] 問題文(含コード&リンク): 
#  リスト構造をもつ成績処理のプログラム list.c に,引数として指定された得点のデー 
#  タをリストから削除するdelete 関数を追加して,その動作が確認できるプログラムを 
#  作成せよ.ただしこのdelete 関数では,削除したデータの領域はfree 関数を使って 
#  解放せよ.またmain 関数では確認のため,データ削除前のリストと削除後のリストを 
#  表示せよ. 
#  (ヒント: void delete(struct record **listPointer, int scr); ) 
#   

テーブル構造(成績,1,氏名).
テーブル構造(成績,2,成績).

成績ならびからデータ削除(_削除対象となる得点) :-
        findall(_,(
                    テーブル構造(成績,_,_)),
                L),
        P =.. [成績|L],
        findall(L,P,LL),
        成績ならびからデータ削除(_削除対象となる得点,LL,LL2),
        abolish(成績/2),
        append(_,[[_氏名,_成績]|R],LL2),
        assertz(成績(_氏名,_成績)),
        R = [].


成績ならびからデータ削除(_削除対象となる得点,[],[]).
成績ならびからデータ削除(_削除対象となる得点,[[_,_削除対象となる得点]|R1],_削除された成績ならび) :-
        成績ならびからデータ削除(_削除対象となる得点,R1,_削除された成績ならび),!.
成績ならびからデータ削除(_削除対象となる得点,[L|R1],[L|R2]) :-
        成績ならびからデータ削除(_削除対象となる得点,R1,R2),!.