2016-11-13 44 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;