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 1 year has passed since last update.

預金システムのアルゴリズム問題

Posted at

はじめに

プログラミング数ヶ月のペーパープログラマーです。

預金システムのコーティングを行いました。
自分の解答と模範解答が異なるのですが、実行結果は同じです。
この場合自分の解答でも正答になるのか分からずご教授頂きたいです!!

問題

銀行口座に10万円の預金残高があり、お金を引き出すプログラミングを作成する。
以下の条件を達成するプログラムを作成しなさい。

・お金を引き出すと手数料110円がかかり、
「○○円引き落としました。残高○○円です」と表示する。
・もし預金残高より多く引き落とされたら「残高不足です」と表示する。

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

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

自身の解答

def withdraw(balance, amount)
  fee = 110
  direct = balance - (amount + fee)

  if direct >= 0
    puts "#{amount}円引き落としました。残高は#{direct}円です"
  else
    puts "残高不足です"
  end
end

模範解答

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

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

解説

自身の解答では
先に変数「direct」に引き落とし後の残高を導く計算結果を代入しています。

その後、変数directが0より大きいか小さいかの条件分岐を実行しています。

模範解答では
条件分岐内の処理で計算式を記述しています。

まとめ

模範解答では記述量も多くなっているので、自身の解答の方が良いのでは?
と疑問が残ります。。。
ただ、自分の解答に自信を持つだけの知識もありません(笑)

ですので、心優しい方、ご教授お願い致します。

0
0
0

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?