改变switch()内的数据,积累

时间:2013-01-26 08:25:08

标签: c++ accumulator

我正在做一个用C ++刺激ATM并且对累加器有一些麻烦的项目,我的问题是:我使用switch(这里是case 1)来改变在包含函数内部声明的2个变量的值switch(),但值只在case 1中更改,并且它们自己重置为原始值(如const声明),所以当我尝试打印检查并保存(在3和4的情况下)它打印出原始数量(1000)。所以我不知道我在这里做错了什么。问题不在于金额,我已经尝试用数值替换金额但仍然不起作用。 请帮忙

int transactions()
{   
    double checking = 1000.00, saving = 1000.00;
    double amount;
    switch (inputRange(menu()))
    {
    case 1: system("cls");
            amount = getAmount("Enter an amount to transfer from checking to saving: ");
            checking -= amount; 
            saving += amount;
            cout << checking << " " << saving; // they only change inside case 1
            cout << "\nTransaction completed! \n\nPress ENTER to return to main menu...";
            cin.ignore(99,'\n');
            break;

更新***我已经得到了它们,谢谢,只是忘了&amp;,这是有效的

   int transactions(double &checkBal, double &saveBal)
{       
    double amount;

    //set precision
    cout << fixed << showpoint << setprecision(2);

    switch (inputRange(menu()))
    {
    case 1: system("cls");
            checkingToSaving (getAmount("Enter an amount to transfer from checking to saving: "), checkBal, saveBal);
            cout << "\nTransaction completed! \n\nPress ENTER to return to main menu...";
            cin.ignore(99,'\n');
            break;

3 个答案:

答案 0 :(得分:1)

问题是checkingsaving仅在对transactions()的一次调用期间存在。

transactions()被调用,初始化,你的代码改变它们,它们会在transactions()返回时消失。再次调用该函数时,整个循环重复。

这两个变量需要存在于函数之外(可能是某些类的数据成员)。

答案 1 :(得分:1)

宣布'客户'类,(包括姓名,地址,储蓄,检查等成员)。在'transactions'之外创建实例并将实例作为参数传递。

那,或者DB。

答案 2 :(得分:-1)

对您当前问题的粗略回答是使用静态变量:

int transactions()
{   
    static double checking = 1000.00;
    static double saving = 1000.00;
    .
    .

此类方法仅为您提供一个检查和保存实例。如果要将程序扩展为具有多个帐户,则应该使用类实例来保存数据:

class Account{
    double checking;
    double saving;
public:
    int transactions();
};