我正在做一个用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;
答案 0 :(得分:1)
问题是checking
和saving
仅在对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();
};