2015-07-20 57 views
-2

對於一個項目,我需要建立一個程序,讓我的老師對紅寶石運行它。當他運行它,他應該能夠按一個bÇd,或ē很多次他想,只要他進入一次一個。這些字母代表商店中的隨機物品。我需要在紅寶石幫助項目

  • 「a」 爲$ 0.50 「3所述的美元」
  • 「b」 爲$ 1.25
  • 「c」 是 「爲兩元4」 $ 0.75或
  • 「d」 爲$ 1.00美元
  • 「E」爲$ 0.69

如果他按下任何其他字母比5位程序將結束,並會吐出的美元總量。我不知道如何製作代碼,因此每三分之一的「a」就是一美元,而「c」也可以,有人可以幫我解決這個問題。

我運行的一切代碼,除了「一」和「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) 
+3

你能告訴我們你的代碼? –

+3

什麼是Ruby 6?請澄清您的具體問題或添加更多的細節,以確切地突出你所需要的。正如目前所寫,很難確切地說出你在問什麼。請參閱[如何提問](http://stackoverflow.com/help/how-to-ask)頁面以獲得澄清此問題的幫助。 – vgoff

+1

你似乎並不這麼認爲,但語法和標點符號很重要。這種意識流是難以逾越的。 – 2015-07-20 00:58:06

回答

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 

輸入例如「aaaaabbc」後,@items哈希是這樣的:

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

要計算總金額,我會介紹一個變數:

@total = 0.0 

對於特例「a」,我們有已經確定了我們有多少「3美元」以及剩下多少常規「a」。 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'] 

我猜你可以自己弄清楚剩下的物品。