_エキストラを募って品物を指定して買い物をしてもらい、各人が使った金額をまとめたいのですが、
入力1 対象品目数 参加者数
入力2 各品物の値段
入力3 各品物の数(1人目)
入力4 各品物の数(2人目)
:
のように入力するとします。
入力1 4 3
入力2 1500 1700 1900 2100
入力3 2 1 1 4
入力4 2 3 0 8
入力5 1 4 11 6
_例えば上記のように入力があった時に、
参加者1は (1500 * 2)+(1700 * 1)+(1900 * 1)+(2100 * 4)
参加者2は (1500 * 2)+(1700 * 3)+(1900 * 0)+(2100 * 8)
参加者3は (1500 * 1)+(1700 * 4)+(1900 * 11)+(2100 * 6)
と計算されることになります。
_参加者1、2、3… は配列1、2、3…ですが、何個の配列になるかは任意で指定される点が肝です。参加者1はppp001、参加者2はppp002… の方向で考えましたが、お恥ずかしいですが下記のように行き詰まりました。
n = Array.new(2) n = gets.split(' ') n = n.map { |v| v.to_i} #n[0]アイテム数 n[1]人数 m = Array.new(n[0]) m = gets.split(' ') m = m.map { |v| v.to_f} #各アイテムの点数 r = [] array_name = 'ppp0001' ppp001 = [] n[1].downto(1) do |x| k = Array.new(n[0]) k = gets.split(' ') k = k.map { |v| v.to_i} #各品物の数 m.zip(k) do |e,m| n[1].times do instance_variable_set('@' + array_name, gets.split(' ')) array_name.succ! end ppp001 << e*m end p ppp001 (0).upto(n[0]) do |z| ppp << diag(m[z]*k[z]).round r << ppp end end p r
_任意の数だけ品物数を入力させ、最初に入力する各品物の値段をいわばデータベースとして、集計し、例えば [1, 17542] [2, 24900] [3, 41800] などといったように纏めたい(表示したい)です。
_任意の数だけ配列を作るには連番の名前が必要と思いましたが、そのような名前のつけ方がわかりませんでした。 あるいは参加者分だけ配列を作るという方向が違っているのかもしれない、とも思いました。
_なにがしかご教示いただけますと幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。