Изменение данных внутри переключателя (), накопление

Я делаю проект, который стимулирует банкомат в C++ и имеет некоторые проблемы с аккумуляторами, мой вопрос: я использую переключатель (здесь случай 1), чтобы изменить значения 2 переменных, которые объявлены внутри функции, которая содержит переключатель (), однако значения изменяются только в случае 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;

Обновления *** Я уже понял, ребята, спасибо, просто забыл о &, это работает

   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 ответа

Решение

Проблема в том, что checking а также saving существуют только на время одного звонка transactions(),

Они возникают, когда transactions() вызывается, инициализируется, ваш код меняет их, и они исчезают в тот момент, transactions() возвращается. Когда функция вызывается снова, весь цикл повторяется.

Две переменные должны существовать вне функции (вероятно, как члены данных какого-то класса).

Объявите класс "клиента" (с именами, адресами, сбережениями, проверкой и т. Д.). Создайте экземпляры вне "транзакций" и передайте экземпляр в качестве параметра.

Это или БД.

Грубый ответ на вашу непосредственную проблему заключается в использовании статических переменных:

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

Этот тип подхода дает вам только один случай проверки и сохранения. Если вы хотите расширить свою программу, чтобы иметь несколько учетных записей, вам следует использовать экземпляры классов для хранения данных:

class Account{
    double checking;
    double saving;
public:
    int transactions();
};
Другие вопросы по тегам