##はじめに
またもやif else問題です。
本日受けたスクール独自のスキルチェックテストも3割はif,else問題でした。
それほどしっかり身につけなければいけないと思うので本日もしっかりアプトプットしていきます。
##問題
サッカチーム、テルフィーFC(ウイイレ風)のーショップでグッズを買うとポイントがついてきます。
購入金額が4,999円以下の場合、5%のポイント
購入金額が5,000円以上の場合、10%のポイント
このように付与されるポイントを出力するメソッドを作りましょう。
ただし試合でチームが勝利したの場合はポイントが5倍になります。
勝ちの場合はtrue, 負けの場合はfalseで表します。
また、小数点以下をすべてのポイント計算が終わったあとに切り捨てましょう。
purchase_points(4000, false) → 200ポイント獲得です
##ヒント
・これまたif,elseで条件分岐します
・5月30日がCL決勝です。(関係なし)
・小数点を切り捨てるメソッドは?
##解答
def purchase_points(amount, winning)
if amount <= 4999
point = amount * 0.05
else
point = amount * 0.1
end
if winning
point = point * 5
end
puts "#{point.floor}ポイント獲得です"
end
解説します。
まずは引数で
purchase_points(amount, winning)
purchase_points(4000, false)
amount = 購入金額 winning = 勝ち、負け(ture,falseで表します)
続いて条件分岐です。
もし、購入金額が4,999円以下の場合、5%のポイントがつき
購入金額が5,000円以上の場合、10%のポイント
という記述になります。
def purchase_points(amount, winning)
if amount <= 4999
point = amount * 0.05
else
point = amount * 0.1
end
end
これで購入金額についての記述が終わりました。
次は勝ち負けについてです。
もう1つ条件分岐が必要です。
もし、勝ったときはポイント10倍、負けたら何もなしという条件分岐です。
if winning
point = point * 5
end
簡単な記述ですね!
これらを合わせて解答になります。
def purchase_points(amount, winning)
if amount <= 4999
point = amount * 0.05
else
point = amount * 0.1
end
if winning
point = point * 5
end
puts "#{point}ポイント獲得です"
end
purchase_points(3150, true)
#出力 787.5ポイント獲得です
ポイントには普通小数点はいらないですよね。。。
そこで.floorメソッドを用います。
irb(main):001:0> 4.1.floor
=> 4
irb(main):002:0> 4.9.floor
=> 4
puts "#{point.floor}ポイント獲得です"