このディレクトリの索引

# C/C++の宿題片付けます 132代目 #354 # [1] 授業単元: プログラミング実習 # [2] 問題文(含コード&リンク): # (1)http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10174.txt # 次のように各0番目の列要素にテストの点数を初期設定にしてある大きさ # 10×2の配列がある。この配列の1番目の列要素に点数の高い順から順位を格納するプログラムを作成しなさい。 # #   [0] [1] # [0] 67 # [1] 43 # [2] 56 # [3] 97 # [4] 30 # [5] 88 # [6] 76 # [7] 55 # [8] 66 # [9] 78 :- set_prolog_flag(answer_write_options,[quoted(true), portray(true), max_depth(10000000), attributes(portray)]). 配列([[67,_],[43,_],[56,_],[97,_],[30,_],[88,_],[76,_],[55,_],[66,_],[78,_]]). 配列の1番目の列要素に点数の高い順から順位を格納する(_ならび) :- 配列(_ならび), 配列の1番目の列要素に点数の高い順から順位を格納する(1,_ならび). 配列の1番目の列要素に点数の高い順から順位を格納する(_,[]) :- !. 配列の1番目の列要素に点数の高い順から順位を格納する(_順位,_ならび) :- '1番目の列要素の最大値を見つけて順位を振って行く'(_順位,_ならび). '1番目の列要素の最大値を見つけて順位を振って行く'(_順位,_ならび) :- '1番目の列要素の最大値を見つけて2番目要素に順位を振る'(_順位,_ならび,_残りならび), 次の順位(_順位,_次の順位), 配列の1番目の列要素に点数の高い順から順位を格納する(_次の順位,_残りならび). 次の順位(_順位,_次の順位) :- succ(_順位,_次の順位). '1番目の列要素の最大値を見つけて2番目要素に順位を振る'(_順位,_ならび,_残りならび) :- select([_最大値,_順位],_ならび,_残りならび), '最大値は、全ての残りならびの要素と、等しいか、より大きい'(_残りならび,_最大値). '最大値は、全ての残りならびの要素と、等しいか、より大きい'(_残りならび,_最大値) :- forall(member([_残りの要素,_],_残りならび),_最大値 @>= _残りの要素).