このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 132代目 #754 # [1] 授業単元:C # [2] 問題文(含コード&リンク): # 入力されたデータをもとに売上明細を作成して表示する。 # 入力データは商品名と金額で、最大20件とし、^zで終了する。 # 入力されたデータは構造体配列に記録し、 # 入力終了後金額を集計して合計を表示する。 # <構造体メンバ> # 商品名:char型10桁 # 金額:long型 # <実行結果> # ^z # 商品名    金額 # パソコン   248500 # ラジオ     3200 # テレビ    120500 # オーディオ  314000 # レイゾウコ   65800 # クーラー    79000 # 合計    831000 # '入力されたデータをもとに売上明細を作成して表示する。 入力データは商品名と金額で、最大20件とし、\\dで終了する。 入力終了後金額を集計して合計を売上明細として表示する。' :- '入力データは商品名と金額で、最大20件とし、\\dで終了する。'(_入力されたデータ), '金額を集計して合計を売上明細として表示する。'(_入力されたデータ). '入力データは商品名と金額で、最大20件とし、\\dで終了する。'(_入力されたデータ) :- findnsols(20,[_商品名,金額],( at_end_of_stream(current_input),!,fail; 商品名と金額を入力する(_商品名,_金額)),_入力されたデータ),!. 商品名と金額を入力する(_商品名,_金額) :- repeat, 商品名を得る(_商品名), 金額を得る(_金額). 商品名を得る(_商品名) :- 催促後に行入力('商品名 : ',_桁数不問の商品名), '10桁に固定した商品名'(_桁数不問の商品名,_商品名). '10桁に固定した商品名'(_桁数不問の商品名,_商品名) :- 尾部に10桁の空白文字列を付加して(_桁数不問の商品名,_尾部に10桁の空白を付け加えられた商品名), その頭10桁を切り取ることによって尾部に適切な空白桁を付けることができる(_尾部に10桁の空白を付け加えられた商品名,_商品名). 尾部に10桁の空白文字列を付加して(_桁数不問の商品名,_尾部に10桁の空白を付け加えられた商品名) :- atom_concat(_桁数不問の商品名,' ',_尾部に10桁の空白を付け加えられた商品名). その頭10桁を切り取ることによって尾部に適切な空白桁を付けることができる(_尾部に10桁の空白を付け加えられた商品名,_商品名) :- sub_atom(_尾部に10桁の空白を付け加えられた商品名,0,10,_,_商品名). 金額を得る(_金額) :- 整数を得る('金額 : ',true,_金額). 催促後に行入力(_催促,_行) :- write(_催促), 行入力(_行). 行入力(_行) :- read_line_to_codes(current_input,_文字コードならび), atom_chars(_行,_文字コードならび). 整数を得る(_催促,_評価,_整数) :- 催促後に行入力(_催促,_行), 整数検査(_行,_整数), 整数評価(_評価). 整数検査(_行,_整数) :- atom_number(_行,_整数), integer(_整数). 整数評価(_評価) :- call(_評価). '金額を集計して合計を売上明細として表示する'(_入力されたデータ) :- setof(_商品名,[_商品名,_金額] ^ member([_商品名,_金額],_入力されたデータ),_商品名ならび), '売上明細の見出し表示後、商品名ごとに金額を集計して合計を売上明細として表示する'(_商品名ならび,_入力されたデータ). '売上明細の見出し表示後、商品名ごとに金額を集計して合計を売上明細として表示する'(_商品名ならび,_入力されたデータ) :- '売上明細の見出し表示後、', '商品名ごとに金額を集計して合計を売上明細として表示する'(_商品名ならび,_入力されたデータ). '商品名ごとに金額を集計して合計を売上明細として表示する'(_商品名ならび,_入力されたデータ) :- forall( member(_商品名,_商品名ならび), 商品名の売上金額を集計して一行に表示する(_商品名,_入力されたデータ)). 商品名の売上金額を集計して一行に表示する(_商品名,_入力されたデータ) :- 商品名の売上金額を集計して(_商品名,_入力されたデータ,_金額合計), 一行に表示する(_商品名,_金額合計). 商品名の売上金額を集計して(_商品名,_入力されたデータ,_金額合計) :- findsum(_金額,( member([_商品名,_金額],_入力されたデータ)),_金額合計). '売上明細の見出し表示後、' :- write('商品名    金額\n'). 一行に表示する(_商品名,_金額合計) :- writef('%w\t%w\n',[_商品名,_金額]). findsum(A,B,C) :- findall(A,B,L), sum_list(L,C).