Home > Net >  How to create a program that can overwrite a pre-initialized variable with user inputted data during
How to create a program that can overwrite a pre-initialized variable with user inputted data during

Time:01-08

I was tasked to create an ATM mock program and my problem is overwriting the money and PIN variables with the information that the user will enter.

Here it is:

#include <iostream>

using namespace std;

void Check(int money) { cout << "Your current balance is: " << money << endl; }

void Deposit(int money) {
  int deposit;
  cout << "Please enter the amount of cash you wish to deposit.\n";
  cin >> deposit;
  money  = deposit;
  cout << "Your new balance is: " << money << endl;
}

void Withdraw(int money) {
  int withdraw;
  cout << "Please enter the amount of cash you wish to withdraw.\n";
  cin >> withdraw;
  money -= withdraw;
  cout << "Your new balance is: " << money << endl;
}

void Interest(int money) {
  money  = money * 0.05;
  cout << "Your money with interest is: " << money << endl;
}

void Penalty(int money) {
  if (money < 5000) {
    money -= money * 0.02;
    cout << "Your penalty is: " << money << endl;
  } else
    cout << "Your account will not incur a penalty because you are above the "
            "minimum threshold.\n";
}

void ChangePIN(int PIN) {
  int p;
  cout << "Enter a new PIN: ";
  cin >> p;
  PIN = p;
  cout << "Your new PIN is: " << PIN << endl;
}

int main() {
  int money = 5000, PIN = 1234, EPIN;
  cout << "Enter your PIN (Default PIN is 1234): \n";
  cin >> EPIN;
  if (EPIN == PIN) {
    int choice;
    cout << "Welcome!\n"
         << "1 - Check available balance \n"
         << "2 - Deposit cash \n"
         << "3 - Withdraw cash \n"
         << "4 - Compute for the interest of your account(5%)\n"
         << "5 - Compute for the penalty of having a balance below 5000 (2%) \n"
         << "6 - Change your PIN\n"
         << "7 - Exit\n"
         << "Your choice: ";
    cin >> choice;
    switch (choice) {
    case 7: {
      break;
    }
      {
      case 1: {
        Check(money);
        break;
      }
      case 2: {
        Deposit(money);
        break;
      }
      case 3: {
        Withdraw(money);
        break;
      }
      case 4: {
        Interest(money);
        break;
      }
      case 5: {
        Penalty(money);
        break;
      }
      case 6: {
        ChangePIN(PIN);
        break;
      }
      }
    }
    return 0;
  }
}

As you can see I'm pretty much a beginner at this. My problem is the money and PIN have the default values of 5000 and 1234 respectively. Now, I need to make the user be able to change these values but once I use return main() they get assigned the same starting values again, What would be the best workaround for this? I thought of using some sort of accumulator for this but I'd like some advice first.

CodePudding user response:

You can simply do this by using a while loop.

Run an infinite while loop and break it whenever you want to exit from the program.

Here is the code:

#include <iostream>

using namespace std;

void Check(int money) { cout << "Your current balance is: " << money << endl; }

void Deposit(int money) {
  int deposit;
  cout << "Please enter the amount of cash you wish to deposit.\n";
  cin >> deposit;
  money  = deposit;
  cout << "Your new balance is: " << money << endl;
}

void Withdraw(int money) {
  int withdraw;
  cout << "Please enter the amount of cash you wish to withdraw.\n";
  cin >> withdraw;
  money -= withdraw;
  cout << "Your new balance is: " << money << endl;
}

void Interest(int money) {
  money  = money * 0.05;
  cout << "Your money with interest is: " << money << endl;
}

void Penalty(int money) {
  if (money < 5000) {
    money -= money * 0.02;
    cout << "Your penalty is: " << money << endl;
  } else
    cout << "Your account will not incur a penalty because you are above the "
            "minimum threshold.\n";
}

int ChangePIN(int PIN) {
  int p;
  cout << "Enter a new PIN: ";
  cin >> p;
  cout << "Your new PIN is: " << PIN << endl;
  return p;
}

int main() {

  int money = 5000, PIN = 1234;
  while(1){  // run an infinite loop
    int EPIN;
    cout << "Enter your PIN (Default PIN is 1234): \n";
    cin >> EPIN;
    if (EPIN == PIN) {
      int choice;
      cout << "Welcome!\n"
          << "1 - Check available balance \n"
          << "2 - Deposit cash \n"
          << "3 - Withdraw cash \n"
          << "4 - Compute for the interest of your account(5%)\n"
          << "5 - Compute for the penalty of having a balance below 5000 (2%) \n"
          << "6 - Change your PIN\n"
          << "7 - Exit\n"
          << "Your choice: ";
      cin >> choice;
      switch (choice) {
        case 7: {
          return 0; // breaking condition
        }
          {
          case 1: {
            Check(money);
            break;
          }
          case 2: {
            Deposit(money);
            break;
          }
          case 3: {
            Withdraw(money);
            break;
          }
          case 4: {
            Interest(money);
            break;
          }
          case 5: {
            Penalty(money);
            break;
          }
          case 6: {
            PIN = ChangePIN(PIN);
            break;
          }
        }
      }
    }
  }
  return 0;
}

Does this answer your question?

  •  Tags:  
  • Related