質問: 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次元配列の定義と人数分読み込みの2重ループと結果出力の部分をあげてみます。 ちょっと引っかかったのが、単価の配列mが実数扱いになっている点でした。 ``` # 各自の売上個数を2次元配列として定義 ppp = Array.new(n[1]).map{Array.new(n[0])} # 各品物の売上金額合計を配列として定義 kei = Array.new(n[0]) # jを添字として人数分データ読み込み n[1].times.with_index {|a,j| kosuu = gets.chomp.split(' ') kosuu = kosuu.map {|v|v.to_i} # iを添字として読み込んだ個数を集計 n[0].times.with_index {|b,i| # 2次元配列に足し込んでいく ppp[j][i] += plt[j][i] + m[i].to_i * kosuu[i] # 売上金額合計用の配列に足し込んでいく kei[i] += m[i].to_i * kosuu[i] } } # 各自の売上金額出力 n[1].times.with_index {|a,j| n[0].times.with_index {|b,i| print ppp[j][i].to_s + " " } print"\n" } # 各商品の売上金額合計出力 n[0].times.with_index {|b,i| print kei[j][i].to_s + " " } print"\n" ``` 途中抜けているところは、補ってみてください。