このディレクトリの索引

# 出典 :: 現在はリンクが切れています (レス番号110) # [1] 授業単元:プログラミング1 # [2] 問題文(含コード&リンク): # 述語 成績表は学籍番号と成績を引数として持つ。 # このとき,試験の点数の上位11人の学籍番号と試験の点数を,点数が高い順に出力するプログラムを書け。 # ただし,同じ点数の学生がいた場合は,述語の学籍番号が小さいデータを優先するものとする。 # 結果は,学籍番号と点数を1つ以上のスペースで区切り,1行に一人ずつ出力せよ。 成績上位11名 :- 降順に整列した成績鍵ならび(_降順に整列した成績鍵ならび), 上位11名を選別して表示する(_降順に整列した成績鍵ならび). 降順に整列した成績鍵ならび(_降順に整列した成績鍵ならび) :- setof(_成績,[_学籍番号,_成績] ^ 成績表(_学籍番号,_成績),_整列した成績鍵ならび), reverse(_整列した成績鍵ならび,_降順に整列した成績鍵ならび). 上位11名を選別して表示する(_降順に整列した成績鍵ならび) :- once(上位11名を選別する(_降順に整列した成績鍵ならび,_上位11名)), 上位11名を表示する(_上位11名). 上位11名を選別する(_降順に整列した成績鍵ならび,_上位11名ならび) :- findnsols(11,[_学籍番号,_成績], '降順に整列した成績鍵から_学籍番号_成績を取り出す。ただし同点の場合は学籍番号の小さい順に取り出す。'(_降順に整列した成績鍵ならび,_学籍番号,_成績),_上位11名ならび). '降順に整列した成績鍵から_学籍番号_成績を取り出す。ただし同点の場合は学籍番号の小さい順に取り出す。'(_降順に整列した成績鍵ならび,_学籍番号,_成績) :- '降順に整列した成績鍵から'(_降順整列した成績鍵ならび,_成績), '_学籍番号_成績を取り出す。ただし同点の場合は学籍番号の小さい順に取り出す。'(_成績,_学籍番号). '降順に整列した成績鍵から'(_降順整列した成績鍵ならび,_成績) :- member(_成績,_降順に整列した成績鍵ならび). '_学籍番号_成績を取り出す。ただし同点の場合は学籍番号の小さい順に取り出す。'(_成績,_学籍番号) :- setof(_学籍番号_1,[_学籍番号_1,_成績] ^ 成績表(_学籍番号_1,_成績),L), member(_学籍番号,L). 上位11名を表示する(_上位11名ならび) :- forall(member([A,B],_上位11名ならび),writef('%w %w\n',[A,B])).