このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 132代目 #330 # [1] 授業単元:プログラム # [2]問題文 # 次の要領でテストの点数を入力し、それぞれの点数代の人数が何人いるか求めるプログラム # 1.テストの点数を入力するガイダンスを用いて次のように出力 :点数の入力 終了条件:eあるいはE # 2.fgets()を用いて、テストの点数を文字列として入力 # 3.2で入力した文字列が'e'または'E'ならば処理2〜5の処理を終了して6の処理を行う # 4.文字列で入力した点数をint型変数に変換(atoiを使用する) # 5.4で変換したint型の点数が0点以上100点以下なら、それぞれの点数代の人数を数える。 # 6.5の結果の表示 'テストの点数を入力し、それぞれの点数代の人数が何人いるか求めて表示する' :- forall('テストの点数を入力し、それぞれの点数代の人数が何人いるか求める'(_点数下限,_点数上限,_何人),表示する(_点数下限,_点数上限,_何人)). 'テストの点数を入力し、それぞれの点数代の人数が何人いるか求める'(_点数下限,_点数上限,_何人) :- 'テストの点数を入力し、'(_点数ならび), それぞれの点数代の人数が何人いるか求める(_点数ならび,_点数下限,_点数上限,_何人). 'テストの点数を入力し、'(_点数ならび) :- write(':点数の入力 終了条件:eあるいはE \n'), findall(_点数,テストの点数(_点数),_点数ならび). テストの点数(_点数) :- 行入力(_行), \+((_行 = e;_行 = 'E')), テストの点数(_行,_点数). テストの点数(_行,_点数) :- atom_number(_行,_点数). テストの点数(_,_点数) :- テストの点数(_点数). 行入力(_行) :- read_line_to_codes(current_input,_文字コードならび), atom_codes(_行,_文字コードならび). それぞれの点数代の人数が何人いるか求める(_点数ならび,_点数下限,_点数上限,_何人) :- それぞれの点数代の(_点数下限,_点数上限), 人数が何人いるか求める(_点数ならび,_点数下限,_点数上限,_何人). それぞれの点数代の(_点数下限,_点数上限) :- between(0,9,N), 点数代の(N,_点数下限,_点数上限). 点数代の(N,_点数下限,_点数上限) :- _点数下限 is N * 10, _点数上限 is N * 10 + 10. 人数が何人いるか求める(_点数ならび,_点数下限,_点数上限,_何人) :- 何人いるか(点数代の点数(_点数ならび,_点数下限,_点数上限),_何人). 点数代の点数(_点数ならび,_点数下限,_点数上限) :- member(_点数,_点数ならび), '点数は点数下限以上、点数上限未満'(_点数,_点数下限,_点数上限). '点数は点数下限以上、点数上限未満'(_点数,_点数下限,_点数上限) :- _点数 >= _点数下限, _点数 < _点数上限. 何人いるか(_目標,_何人) :- findall(1,_目標,L), length(L,_何人). 表示する(_点数下限,_点数上限,_何人) :- writef('%4r以上 %4r未満 %4r人\n',[_点数下限,_点数上限,_何人]).