情報科学概論 Aクラス 宿題 2002.5.28

買い物をする際の所持金の残高を表示することを想定したスクリプトを考える. 以下の処理を実現するスクリプトを作成し,ファイル名を s0240**-5-28.rb としてメールの添付書類として提出すること.

  1. 最初の手持ちのお金は300円とする.

  2. スクリプトの実行は,本日のテキストの最後の例のように引数なしで始め, 使用金額を逐次入力する形式とする.

  3. 使用した金額を入力すると以下の出力を行う.

    1. 使用金額が残高よりも少ない場合には,

      Used: **, Remaining: **

      のように使用金額と残高を1行に表示して次の入力を待つ.

    2. 使用金額が残高よりも多い場合は,

      No way.

      と表示して買い物が出来ない.

    3. 使用金額が残高と同じ場合には

      Used: **, Purchase finished.

      と1行で表示して処理を終わる.


解答例


remain = 300

while value = gets
  if value.to_i > remain
    puts "No way."
  elsif value.to_i == remain
    print "Used: ", value.to_i, ",  Purchase finished.\n"
    exit
  else
    remain -= value.to_i
    print "Used: ", value.to_i, ",  Remaining: ", remain, "\n"
  end
end


情報科学概論 Bクラス 宿題 2002.5.28

買い物をする際の所持金の残高を表示することを想定したスクリプトを考える. 以下の処理を実現するスクリプトを作成し,ファイル名を s0240**-5-28.rb としてメールの添付書類として提出すること.

  1. 最初の手持ちのお金は300円とする.また,消費税率は5%とし,外税とする.

  2. スクリプトの実行は,本日のテキストの最後の例のように引数なしで始め, 商品の価格(税抜き)を逐次入力する形式とする.

  3. 商品の価格を入力すると以下の出力を行う.

    1. 使用金額が残高よりも少ない場合には,

      Used: **, Remaining: **

      のように使用金額と残高を1行に表示して次の入力を待つ.

    2. 使用金額が残高よりも多い場合は,

      No way.

      と表示して買い物が出来ない.

    3. 使用金額が残高と同じ場合には

      Used: **, Purchase finished.

      と1行で表示して処理を終わる.

注意

浮動小数を四捨五入して整数にするには round メソッドを使用する. 数値に対して round をドットで続けるだけで良い.


1.5.round とすると,整数2を返す.


解答例


remain = 300
tax = 1.05

while value = gets
  if (value.to_i*tax).round > remain
    puts "No way."
  elsif (value.to_i*tax).round == remain
    print "Used: ", (value.to_i*tax).round, ",  Purchase finished.\n"
    exit
  else
    remain -= (value.to_i*tax).round
    print "Used: ", (value.to_i*tax).round, ",  Remaining: ", remain, "\n"
  end
end


Back