我需要ruby中的项目帮助

时间:2015-07-20 00:46:11

标签: ruby

对于一个项目,我需要创建一个程序,允许我的老师在ruby上运行它。当他运行它时,他应该能够按 a b c d e 尽可能多次,只要他一次进入一个。这些字母代表商店中的随机商品。

  • “a”是0.50美元或“3美元兑换”
  • “b”是$ 1.25
  • “c”是0.75美元或“四美元两美元”
  • “d”是$ 1.00
  • “e”是$ 0.69

如果他按下任何其他字母,而不是提到的那个,该程序将结束,并将吐出总金额。我不知道如何制作代码所以每三分之一“a”是一美元而且也是“c”,有人可以帮我解决这个问题。

除了“a”和“c”特价外,我的代码都在运行。

a = 0
b = 0
c = 0
d = 0
e = 0

while true
  letter = gets.chomp

  if letter == "a"
    a += 0.50
  elsif letter == "b"
    b += 1.25
  elsif letter == "c"
    c += 0.75
  elsif letter == "d"
    d += 1.00
  elsif letter == "e"
    e += 0.69
  else
    break
  end
end

print 'Total amount is: '
puts '$%.2f'% ( a + b + c + d + e )

1 个答案:

答案 0 :(得分:1)

预先添加金额使得很难考虑特殊情况。我将从计算输入的项目开始,可能使用Hash,例如:

@items = { 'a' => 0, 'b' => 0, 'c' => 0, 'd' => 0, 'e' => 0 }

loop do
  letter = gets.chomp                  # get letter from keyboard
  break unless @items.has_key? letter  # break if letter is not in hash
  @items[letter] += 1                  # increment hash's letter value
end

输入例如" a a a a a b b c"后,@items哈希将如下所示:

{ 'a' => 5, 'b' => 2, 'c' => 1, 'd' => 0, 'e' => 0 }

要计算总金额,我会引入一个变量:

@total = 0.0

对于特殊情况" a",我们必须确定一个" 3一美元" 3我们有多少常规" a"'s。 Numeric#divmod返回两个值:

5.divmod(3) => [1, 2] # i.e. 1 x 3 + 2

我们的@items哈希和@total变量变为:

special_count, regular_count = @items['a'].divmod(3)
@total += 1.0 * special_count
@total += 0.5 * regular_count

为非特殊情况添加金额是微不足道的:

@total += 1.25 * @items['b']

我想你可以自己弄清楚剩余的物品。