日別アーカイブ: 2022年10月3日

TIPS(Ruby:基本的なポイントカード機能の作り方)

目標

ポイントカードの基本的な部分を作成する。
ポイントの獲得機能
条件を満たしたときにポイント消費する機能

問題

買い物の支払いに現金ではなくsuzucaにチャージして利用しています。
買い物の支払いにsuzucaのカード残額を使うと、
買物金額の 10 % が suzucaポイントとしてたまります。
買い物をする時に、支払う運賃以上のsuzuca ポイントがある場合は、
suzucaポイントが優先的に買い物の支払いに使われます。
ただし、1 ポイントは 1 円になります。
ポイントで買い物を支払った場合、新たなポイントは発生しません。

最初にチャージする現金と、買い物時にかかった料金のリストが与えられるので、
毎回の買い物時に残っているお金とポイントを出力してください。

ただし、途中でカード残高とポイントの両方が買い物の金額を下回ることはありません。

与えられる入力値

5000 5
200
300
500
100
100

期待する出力

4800 20
4500 50
4000 100
4000 0
3900 10

コードと解説

#1行目の入力値を受け取る
n,m = gets.split.map(&:to_i)

#ポイントは最初は0なので0
point = 0

#2行目から6行目までを先に配列として受け取る
plice = readlines.map(&:to_i)

plice.each do |i|
#持っているポイントより値段が低いときにポイントを消費する
  if i <= point
     point = point - i
#チャージ金額から値段を差し引きする
  else n = n - i
#値段の金額の10分の1のポイントを得る
     point += i / 10
  end
買い物ごとのsuzucaのチャージ金額とポイント数を出力する
  puts n.to_s + " " + point.to_s
end

https://paiza.io/ja/projects/new

↑こちらにコピペして「実行」で確認できます。

↓このような出力結果になっていていればOKです。