0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ruby ドリル③ eachの入れ子について

Last updated at Posted at 2021-05-20

##はじめに

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さんでも繰り返し行います。

0
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?