LoginSignup
0
0

More than 1 year has passed since last update.

本日の基礎練習問題(22/3/16)

Posted at

問題
以下の条件を達成するプログラムを実装しなさい
銀行口座に10万円の預金残高があり、お金を引き出すプログラムを作成します。
・お金を引き出すwithdrawメソッドを作成する
・お金を引き出すと手数料110円かかり、「◯◯円引き落としました。残高は◯◯円です」と表示する(残高は手数料を引いた額を表示します)
・引き落とし金額と手数料の合算が、預金残高より大きい場合は「残高不足です」と表示する
・以下にヒントを用意するので参考にしてください

def withdraw(balance, amount)
  fee = 110  # 手数料
# 引き落とし額と残高を表示する、もしくは残高より多く引き落としたら残高不足と表示
end

balance = 100000  # 残高
puts "いくら引き落としますか?(手数料110円かかります)"
amount = gets.to_i
withdraw(balance, amount)

私の回答

def withdraw(balance, amount)
  fee = 110
  after_balance = balance - amount - fee
  if after_balance < 0
   puts "残高不足"
  else
   puts "#{amount}円引き落としました。残高は#{after_balance}円です"
  end
# 引き落とし額と残高を表示する、もしくは残高より多く引き落としたら残高不足と表示
end

balance = 100000
puts "いくら引き落としますか?(手数料110円かかります)"
amount = gets.to_i
withdraw(balance, amount)

解説

まず3行目で残高-引き落とし額-手数料を計算し残高後の数値をafter_balanceに代入する。
次にif文でafter_balanceが0未満の場合は残高不足と出力。
それ以外は残高を表示する記述をする。

模範回答

def withdraw(balance, amount)
  fee = 110
  if balance >= (amount + fee)
    balance -= (amount + fee)
    puts "#{amount}円引き落としました。残高は#{balance}円です"
  else
    puts "残高不足です"
  end
end

balance = 100000
puts "いくら引き落としますか?(手数料110円かかります)"
amount = gets.to_i
withdraw(balance, amount)

模範解説

13行目で入力した金額(amount)と手数料110(fee)の合計が100,000以上か否かを判断し処理しています。金額と手数料の合計が100,000以下の場合は、balance -= (amount + fee)、つまりbalance = balance - (amount + fee)が処理され、最終的な返り値が出力されます。金額と手数料の合計が100,000以上の場合は残高不足である旨のメッセージを表示しています。

感じたこと

考え方自体は合っていたが記述方法が間違いだった。正常に処理されていればOKだが他人がコードを見た際に
わかりやすいコードを書くことが必要だと思うので今後は可読性を意識して取り組みたい。
また最近嬉しいことに私の投稿にご指摘していただけることが多くなってきました。
とても勉強になるので今後ともアドバイスやご指摘いただけると幸いです。

0
0
1

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