2016-11-13 63 views
-2

我有一個簡單的程序,您可以用(保加利亞)貨幣輸入一個值,並以最經濟的方式顯示鈔票中的金額分割。例如用於91的量,它應該打印1*50 + 2*20 + 1無法刪除金額分解中的尾部加號

好了,問題是,當你輸入像20例如在輸出少量有一個尾隨「+」在末端(例如,而不是1*20 +1*20)。我想知道如果一個人不輸出數字。 Levove是保加利亞貨幣單位。

#include <iostream> 
using namespace std; 

int main() 
{ 
    unsigned int Amount; 
    cout << "Enter the amount of levove: "; 
    cin >> Amount; 
    unsigned int Fifty = 50; 
    unsigned int Twenty = 20; 
    unsigned int Ten = 10; 
    unsigned int Five = 5; 
    unsigned int Two = 2; 
    unsigned int One = 1; 
    unsigned int Levove = Amount; 

    cout << Suma << " = "; 

    if (Levove/Fifty == 0) 
    { 
    } 
    else 
     if (Levove/Fifty == 1) 
    { 
     cout << Levove/Fifty << "*" << Fifty << "+"; 
    } 
    else 
    { 
     cout << Levove/Fifty << "*" << Fifty << "+"; 
    } 
     Levove %= Fifty; 

    if (Levove/Twenty == 0) 
    { 
    } 
    else if (Levove/Twenty == 1) 
    { 
     cout << Levove/Twenty << "*" << Twenty << "+"; 
    } 
    else 
    { 
     cout << Levove/Twenty << "*" << Twenty << "+"; 
    } 
     Levove %= Twenty; 


    if (Levove/Ten == 0) 
    { 
    } 
    else if (Levove/Ten == 1) 
    { 
     cout << Levove/Ten << "*" << Ten << "+"; 
    } 
    else 
    { 
     cout << Levove/Ten << "*" << Ten << "+"; 
    } 
     Levove %= Ten; 


    if (Levove/Five == 0) 
    { 
    } 
    else if (Levove/Five == 1) 
    { 
     cout << Levove/Five << "*" << Five << "+"; 
    } 
    else 
    { 
     cout << Levove/Five << "*" << Five << "+"; 
    } 
     Levove %= Five; 

    if (Levove/Two == 0) 
    { 
    } 
    else if (Levove/Two == 1) 
    { 
     cout << Levove/Two << "*" << Two << "+"; 
    } 
    else 
    { 
     cout << Levove/Two << "*" << Two << "+"; 
    } 
     Levove %= Two; 


    if (Levove/One == 0) 
    { 
    } 
    else if (Levove/One == 1) 
    { 
     cout << Levove/One << "*" << One; 
    } 
    else 
    { 
     cout << Levove/One << "*" << One; 
    } 
     Levove %= One; 


    return 0; 
} 
+1

「有在一個方面加上「。那麼,你寫了「<<」+「;'。你期望什麼? – MSalters

回答

0

問題

的問題是,你總是輸出在任何硬幣(除了最後一個)的不知道如果事情會遵守或不遵守到底「+」。

例如,20的量,以下情況將被觸發:

... 
else if (Levove/Twenty == 1) 
{ 
    cout << Levove/Twenty << "*" << Twenty << "+"; 
} 
... 

但在沒有餘,不出意外將被打印出來,讓你結束預告片。

如何解決?

無處不在,你目前寫一個尾隨「+」,你應該改變你的代碼,使僅這一點,如果有會是一個滯留者:

... 
if (Levove/Twenty != 0) // also think of simplifying the ifs 
{ 
    cout << Levove/Twenty << "*" << Twenty ; 
    Levove %= Twenty; // this is only needed if Lenove/Twenty is not null. 
    if (Levove != 0) 
     cout <<" + "; 
} 

順便問一下,你也可以簡化您的if .. else if .. else構建

其他的看法

在你的代碼看,我猜你正在學習。如果你已經學會了如何做一個功能,我會強烈建議你把重複的部分功能:

unsigned int amount_to_coins (unsigned int amount, unsigned int coin_value) { 
    unsigned int coins=amount/coin_value; 
    if (coins) 
    { 
     cout << coins << "*" << coin_value ; 
     amount %= coin_value; 
     if (amount) 
      cout <<" + "; 
    } 
    return amount; 
} 

main()功能隨後將變得更容易閱讀:

Levove = amount_to_coins (Levove, Fifty); 
Levove = amount_to_coins (Levove, Twenty); 
... 
Levove = amount_to_coins (Levove, One); 
cout <<endl; 

if (Levove !=0) 
    cout << "Now there must be a bug somewhere !"<<endl;