2015-09-21 52 views
0
cout << "Your change is " << change << ". Here's your change:"; 

    char q = '@'; 
    double ccounter = 0; 
    while(ccounter <= (change - .24)){ 
     cout << q; 
     ccounter = ccounter + .25; 
    } 

    char d = '^'; 
    while(ccounter <= (change - .09)) 
    { 
     cout << d; 
     ccounter = ccounter + .10; 
    } 

    char n = '&'; 
    while(ccounter <= (change - .04)){ 
     cout << n; 
     ccounter = ccounter + .05; 
    } 

    char p = '*'; 
    while(ccounter <= change){ 
     cout << p; 
     ccounter = ccounter + .01; 
    } 

    return 0; 
} 

一旦您的客戶向您支付的金額大於或等於1.87,請使用上面列出的符號給他們進行更改。因此,舉例來說,如果你的客戶有5美元支付的,你應該打印出來:使用字符圖標確定更改的C++數學計算

Your change is 3.13. Here’s your change: $$$^***

首先是編碼第二塊是提示。

當他們願意付出一切都很好,但4獲得4組便士的圖標時,實際上它應該有三個,因爲變化是0.13是什麼用戶輸入3。
任何幫助或建議將不勝感激!

謝謝你們:)

[ * ] = Penny (1 cent) 
[ & ] = Nickel (5 cents) 
[^] = Dime (10 cents) 
[ @ ] = Quarter (25 cents) 
[ $ ] = 1 dollar 
+0

時間來學習如何使用調試器,以及如何通過一步一行行的代碼。 –

+1

簡答題;浮點不是很大,用於存儲貨幣金額,因爲舍入誤差可以很容易地在蠕動,你應該在美分存儲貨幣金額爲整數值。 –

+0

那麼如果你想成爲任何類型的程序員,甚至是一個愛好者,那麼你真的需要學習如何使用調試器。這在這樣的情況下是無價的。 –

回答

0

循環是在錯誤的時間,因爲ccounter變量從浮點舍入誤差累積結束。如果你計算2 + 0.1 + 0.01 + 0.01 + 0.01,你2.1299999999999994。你應該改變一切使用整數運算,即用213美分計數器開始,隨後的25,10,5和1從減法。如果你堅持整數運算,它將可靠地工作。

+0

Ohhhh !!偉大的一點。我相信提示只需使用雙打。 – user5357686

0

你的循環的終止條件出現都有一個關閉錯誤。它可能會更清楚地寫代碼爲:

cout << "Your change is " << change << ". Here's your change:"; 

    char q = '@'; 
    double ccounter = 0; 
    while((change - ccounter) >= 0.25) 
    { 
      cout << q; 
      ccounter = ccounter + .25; 
    } 
    char d = '^'; 
    while((change - ccounter) >= 0.10) 
    { 
      cout << d; 
      ccounter = ccounter + .10; 
    } 
    char n = '&'; 
    while((change - ccounter) >= 0.05) 
    { 
      cout << n; 
      ccounter = ccounter + .05; 
    } 
    char p = '*'; 
    while((change - ccounter) >= 0.01) 
    { 
      cout << p; 
      ccounter = ccounter + .01; 
    } 
    return 0; 
} 
+0

你的循環是如何工作的? – user5357686

+0

嗨,循環的設置與你的一樣。在我看來,測試條件更清楚地寫在我的哪裏(change - ccounter)是仍然需要分發的變化量。 在你最後一種情況下,(ccounter <= change),如果你有1美分,它會進入循環兩次。如果以你的風格寫作,它應該是(ccounter SteveM

+0

感謝您的幫助。我實際上修改了算法,如果你有興趣看到它,請告訴我。 – user5357686