2014-11-03 195 views
0

我需要从以下程序中添加一个减值,但是当我到达添加部分时出现错误,如何在添加“宿舍,镍币,硬币和便士”后仍然显示它。C++私有和公共函数

当我到达添加部分时,我该如何得到8?请帮助我。

#include <iostream> 
#include <iomanip> 
using namespace std; 

class Purse 
{ 
private: 
    int quarters; 
    int dimes; 
    int nickels; 
    int pennies; 

public: 
    void display_purse(int, int, int, int); 
    int insert_money(int, int, int, int); 
    int remove_money(int,int,int,int); 
}; 

int main() 
{ 
    int qua, dim, nic, pen; 
    int quaa, dimm, nicc, penn; 
    int quaaa, dimmm, niccc, pennn; 

    cout << "Enter the number of Quarters :" << endl; 
    cin >> qua; 

    cout << "Enter the number of Dimes :" << endl; 
    cin >> dim; 

    cout << "Enter the number of Nickels :" << endl; 
    cin >> nic; 

    cout << "Enter the number of Pennies :" << endl; 
    cin >> pen; 


    Purse purse1; 
    purse1.display_purse(qua, dim, nic, pen); 

    cout << endl << "Current content of the purse: " << qua << " quarters " << dim   <<  " dimes " << nic << " nickels " << pen << " pennies " << endl << endl; 

    cout << "or " << qua/4 + dim/10 + nic/20 + pen/100 << " dollars" << endl << endl; 

    //starts adding 

    cout << "Enter the number of Quarters to add : " << endl; 
    cin >> quaa; 

    cout << "Enter the number of Dimes to add : " << endl; 
    cin >> dimm; 

    cout << "Enter the number of Nickels to add : " << endl; 
    cin >> nicc; 

    cout << "Enter the number of Pennies to add : " << endl; 
    cin >> penn; 

    cout << endl << "The amount after entered is :" << purse1.insert_money(quaa, dimm,  nicc ,penn) << endl << endl; 

//starts removing 

    cout << "Enter the number of Quarters to remove : " << endl; 
    cin >> quaaa; 

    cout << "Enter the number of Dimes to remove : " << endl; 
    cin >> dimmm; 

    cout << "Enter the number of Nickels to remove : " << endl; 
    cin >> niccc; 

    cout << "Enter the number of Pennies to remove : " << endl; 
    cin >> pennn; 

    cout << endl << "The amount after entered is :" << purse1.remove_money(quaaa, dimmm, niccc, pennn) << endl; 

    cout << "or " << quaaa/4 + dimmm/10 + nic/20 + pennn/100 << " dollars" << endl << endl; 

    return 0; 
} 

void Purse::display_purse(int x, int y, int z, int a) 
{ 
    quarters = x; 
    dimes = y; 
    nickels = z; 
    pennies = a; 
} 

int Purse::insert_money(int quaa, int dimm, int nicc, int penn) 
{ 
    quarters += quaa; 
    return quarters; 

    dimes += dimm; 
    return dimes; 

    nickels += nicc; 
    return nickels; 

    pennies += penn; 
    return pennies; 
} 

int Purse::remove_money(int quaaa, int dimmm, int niccc, int pennn) 
{ 
    quarters -= quaaa; 
    return quarters; 

    dimes -= dimmm; 
    return dimes; 

    nickels -= niccc; 
    return nickels; 

    pennies -= pennn; 
    return pennies; 
} 
+0

四个参数“int,int,int,int”是什么意思?这太可怕了。 – gnasher729 2014-11-03 17:38:31

+3

你需要一些基本的C++课程。在这种情况下,你有多个'return'语句。第一个返回下面的代码从不执行。 – 2014-11-03 17:38:35

+0

您需要告诉我们您收到的错误。 – Philipp 2014-11-03 17:44:15

回答

2

您将整数分开。例如,9/4 == 2评估为true,而9/4 == 1.25评估为false

的简单的解决您的问题,是一个浮点数,而不是分裂较小的硬币的每个数量数量:

cout << "or " << quaaa/4.0 + dimmm/10.0 + nic/20.0 + pennn/100.0 << " dollars" << endl << endl; 

此外,你的功能实际上并没有完成他们的代码。一旦你在函数中返回一个返回语句,它就会退出。例如:

int Purse::insert_money(int quaa, int dimm, int nicc, int penn) 
{ 
    quarters += quaa; 
    return quarters; //Everything After this never executes 

    dimes += dimm; 
    return dimes; 

    nickels += nicc; 
    return nickels; 

    pennies += penn; 
    return pennies; 
} 

应改为:

void Purse::insert_money(int quaa, int dimm, int nicc, int penn) 
{ 
    quarters += quaa; 
    dimes += dimm; 
    nickels += nicc; 
    pennies += penn; 
} 

或潜在:

void Purse::insert_money(int& quaa, int& dimm, int& nicc, int& penn) 
{ 
    quarters += quaa; 
    quaa = quarters; 
    dimes += dimm; 
    dimm = dimes; 
    nickels += nicc; 
    nicc = nickels; 
    pennies += penn; 
    penn = pennies; 
} 

如果您想返回的总额每种货币在你的钱包

最后display_purse,不显示你的钱包的内容,它实际上只是设置你的p请注意你传入的任何值。

一般而言,您发布的代码会让我相信您并未实际尝试单步执行并自行调试它,但在我的回答中您的其他评论应该在右侧跟踪开始。