このディレクトリの索引

# 出典 :: C/C++の宿題を片付けます 113代目 (レス番号146) # [1] 授業単元: C++ # [2] 問題文(含コード&リンク): # キーボードから100点満点のテストの点数を入力し(-1で終了)、 # 10点ごとの人数を int型の配列 count[11]に数えるプログラムを # 作成せよ。 テストは100点満点とし、それ以外の入力はエラーとし # て無視する。ただし -1 はデータの終了を表すものとする。 点数 # の入力が終了したら、度数分布を画面に出力して終了する。出力は # 人数と,*(アスタリスク)によるグラフとする。 'キーボードから100点満点のテストの点数を入力し(-1で終了)、 10点ごとの人数を数える。 テストは100点満点とし、それ以外の入力はエラーとし て無視する。ただし -1 はデータの終了を表すものとする。 点数 の入力が終了したら、度数分布を画面に出力して終了する。出力は 人数と,*(アスタリスク)によるグラフとする。' :- 'キーボードから100点満点のテストの点数を入力し(-1で終了)、10点ごとの人数を数える。'(_テストの点数ならび,_10点ごとの人数ならび), '点数の入力が終了したら、度数分布を画面に出力して終了する。 出力は人数と,*(アスタリスク)によるグラフとする。'(_10点ごとの人数ならび). 'キーボードから100点満点のテストの点数を入力し(-1で終了)、10点ごとの人数を数える。'(_テストの点数ならび,_10点ごとの人数ならび) :- 'キーボードから100点満点のテストの点数を入力し(-1で終了)、'(_テストの点数ならび), '10点ごとの人数を数える。'(_テストの点数ならび,_10点ごとの人数ならび). 'キーボードから100点満点のテストの点数を入力し(-1で終了)、'(_テストの点数ならび) :- findall(_点数,( '100点満点のテストの点数を得る'(_点数),(_点数= -1,!,fail;true)),_テストの点数ならび). '100点満点のテストの点数を得る'(_点数) :- repeat, 整数を得る('点数を入れてください (-1で終了) : ',between(-1,100,_点数),_点数). 整数を得る(_催促,_評価,_整数) :- 催促付き行入力(_催促,_行), 整数検査(_行,_整数), 評価(_評価). 催促付き行入力(_催促,_行) :- write(_催促), 行入力(_行). 行入力(_行) :- read_line_to_codes(current_input,_コードならび), atom_codes(_行,_コードならび). 整数検査(_行,_整数) :- atom_number(_行,_整数), integer(_整数). 評価(_評価) :- _評価. '10点ごとの人数を数える。'(_テストの点数ならび,_10点ごとの人数ならび) :- 'テストの点数ならびを一旦、10点ごとに丸めて'(_テストの点数ならび,_10点ごとに丸めたテストの点数ならび), 分布ならびを得る(_10点ごとに丸めたテストの点数ならび,[0,10,20,30,40,50,60,70,80,90,100],[[],[],[],[],[],[],[],[],[],[],[]],_10点ごとの人数ならび). 'テストの点数ならびを一旦、10点ごとに丸めて'(_テストの点数ならび,_10点ごとに丸めたテストの点数ならび) :- findall(_丸めた点数,( member(_点数,_テストの点数ならび), '10点ごとの丸め'(_点数,_丸めた点数)),_10点ごとに丸めたテストの点数ならび). '10点ごとの丸め'(_点数,_10点ごとに丸めた点数) :- _10点ごとに丸めた点数 is (_点数 // 10) * 10. 分布ならびを得る([],_,L,L) :- !. 分布ならびを得る([V|R],L1,L2,L3) :- nth1(N,L1,V), nth1(N,L2,W), 要素番号によるならびの置換(N,[*|W],L2,L4), 分布ならびを得る(R,L1,L4,L3). 要素番号によるならびの置換(N,A,L1,L2) :- append(L0,[B|R],L1), length([_|L0],N), append(L0,[A|R],L2). '点数の入力が終了したら、度数分布を画面に出力して終了する。 出力は人数と,*(アスタリスク)によるグラフとする。'(_10点ごとの人数ならび) :- アスタリスクによる棒グラフ([0,10,20,30,40,50,60,70,80,90,100],_10点ごとの人数ならび). アスタリスクによる棒グラフ([],[]). アスタリスクによる棒グラフ(LL1,LL2) :- アスタリスクによる棒グラフを出力して行く(LL1,LL2). アスタリスクによる棒グラフを出力して行く([_点数|R1],[_アスタリスクならび|R2]) :- '点数と棒グラフを一行出力する'(_点数,_アスタリスクならび), アスタリスクによる棒グラフ(R1,R2). '点数と棒グラフを一行出力する'(_点数,_アスタリスクならび) :- '点数は3桁のヘッドゼロサプレス、アスタリスクならびをアスタリスク棒に変換'(_点数,_アスタリスクならび,_点数表示文字列,_アスタリスク棒), 一行出力する'(_点数表示文字列,_アスタリスク棒). '点数は3桁のヘッドゼロサプレス、アスタリスクならびをアスタリスク棒に変換'(_点数,_アスタリスクならび,_点数表示文字列,_アスタリスク棒) :- 'ヘッドレスサプレス'(3,_点数,_点数表示文字列), atom_chars(_アスタリスク棒,_アスタリスクならび). 'ヘッドゼロサプレス'(_N桁,_文字列,_N桁の頭部空白文字列) :- 'N桁の空白'(_N桁,_N桁の空白), 'N桁の空白を頭部に付加してから、後方からN桁を切り取る'(_N桁,_N桁の空白,_文字列,_N桁の頭部空白文字列). 'N桁の空白'(_N桁,_N桁の空白) :- findall(' ',between(1,_N桁,_),_空白ならび), atom_chars(_N桁の空白,_空白ならび). 'N桁の空白を頭部に付加してから、後方からN桁を切り取る'(_N桁,_N桁の空白,_文字列,_N桁の頭部空白文字列). 'N桁の空白を頭部に付加してから、'(_N桁の空白,_文字列,_頭部にN桁の空白が付加された文字列), 後方からN桁を切り取る(_N桁,_頭部にN桁の空白が付加された文字列,_N桁の頭部空白文字列). 'N桁の空白を頭部に付加してから、'(_N桁の空白,_文字列,_頭部にN桁の空白が付加された文字列) :- atomic_list_concat([_N桁の空白,_文字列],_頭部にN桁の空白が付加された文字列). 後方からN桁を切り取る(_N桁,_頭部にN桁の空白が付加された文字列,_N桁の頭部空白文字列) :- sub_atom(_頭部にN桁の空白が付加された文字列,_,_N桁,0,_N桁の頭部空白文字列). 一行出力する'(_点数表示文字列,_アスタリスク棒) :- writef('%w %w\n',[_点数表示文字列,_アスタリスク棒]).