##はじめに
furimaアプリ制作を終わり、現在はオリジナルアプリ制作のためアプリのペルソナなどを考えており、コードを記述しておりません。。。
本日はエラー文と戦ってないのでまたrubyドリルの復習をしたいと思います。
##問題
以下のように、生徒の名前と生徒の所持金が入った配列があります。
この配列を用いて、生徒の名前とそれぞれの合計額が出力されるコードを記述して下さい。
.rb
student = [["Arakagaki", [500, 500, 122]], ["Hoshino", [1000, 1000, 1150]], ["Gen", [4040, 4040]]]
##ヒント
・昨日結婚しました
・合計金額は語呂合わせです
・each文を使います。
・eachメソッドを使います。
・少しづつ取り出す事を考えます
##解答・解説
.rb
students = [["Arakagaki", [500, 500, 122]], ["Hoshino", [1000, 1000, 1150]], ["Gen", [4040, 4040]]]
students.each do |student|
sum = 0
student[1].each do |price|
sum += price
end
puts "#{student[0]}さんの合計金額は#{sum}円です"
end
#出力
#Arakagakiさんの合計金額は1122円です
#Hoshinoさんの合計金額は3150円です
#Genさんの合計金額は8080円です
eachメソッドの入れ子を記述しました。
少しづつ解説していきます。
まずは生徒の配列の取り出します。
.rb
students = [["Arakagaki", [500, 500, 122]], ["Hoshino", [1000, 1000, 1150]], ["Gen", [4040, 4040]]]
students.each do |student|
puts student
end
#出力
#Arakagaki
#500
#500
#122
#Hoshino
#1000
#1000
#31150
#Gen
#4040
#4040
続いて、今度はお金だけを取り出します。お金も配列に格納されていますので再びeach文で取り出します。
ここで今回のポイントとなるeachの入れ子が出てきます。
.rb
students = [["Arakagaki", [500, 500, 122]], ["Hoshino", [1000, 1000, 1150]], ["Gen", [4040, 4040]]]
students.each do |student|
student[1].each do |price|
puts price
end
end
#出力
#500
#500
#122
#1000
#1000
#1150
#4040
#4040
今回は合計金額を出さなければなりません。
sum = o
を使って自己代入をしてみます。
.rb
students = [["Arakagaki", [500, 500, 122]], ["Hoshino", [1000, 1000, 1150]], ["Gen", [4040, 4040]]]
students.each do |student|
sum = 0
student[1].each do |price|
sum += price
end
end
#1回目
sum = 0
sum += price #500が入っている
#2回目
sum = 500 #1回目で入っている
sum += price #500 += 500の計算式
#3回目
sum = 1000 #すでに2回計算されて1000が入っている
sum += price #1000 += 122の計算式
この結果"Aragakiさんの合計人数は37人です。"
と出力されるようになります。
この作業を残り2つ
Hoshinoさん,Genさんでも繰り返し行います。