# Cougar Cash with input validation and user confirmation

## Problem Statement

• Everyday you go to the BYU Candy Counter and buy chocolate covered cinnamon bears using your Cougar Cash card.
• Write a program which prompts the user how much they want to spend on candy, and then prints out the card balance and what cash is still owed.
• The initial card balance is$10.00. • Any purchase greater than what is on the card should use up the balance on the card. ### Additions from Cougar Cash • Check whether the input from the user is a valid amount. If not, prompt the user again. • If the desired expense is more than what is on the card, you prompt the user before charging the expense to the card. ## Solution /* Test Case 1: Input: 8.50 (input less than initial balance) Output: balance is 1.50 Actual: balance is 1.50 Test Case 2: Input: 15.00 (input greater than initial balance), then say Yes to prompt to charge card Output: reprompt, balance is 0, owes 5.00 Actual: reprompt, balance is 0, owes 5.00 Test Case 3: Input: 0 (border case) Output: balance is 10 Actual: balance is 10 Test Case 4: Input: -1 (negative example) Output: reprompt Actual: reprompt */ #include <iostream> #include <iomanip> #include <string> using namespace std; const double INITIAL_BALANCE = 10.00; int main() { // inputs: how much they want to spend // outputs: balance after purchase, cash owed cout << fixed << setprecision(2); // Prompt the user double desired_expenditure; double balance = INITIAL_BALANCE; cout << "How much you wanna spend on bears?$";
cin >> desired_expenditure;

// Check that input is positive
if (desired_expenditure < 0)
{
cout << "You can't buy $" << desired_expenditure << " of bears!! Silly! Try again:$";
cin >> desired_expenditure;
}

// if input > balance
if (desired_expenditure > balance)
{
// Check if they wanna use the card still
cout << "That's more than is on the card. Still wanna use the card? (Y/N) ";
string input;
cin >> input;

if (input == "Y")
{
// report (input - balance) as still owed
cout << "$" << (desired_expenditure - balance) << " is still owed" << endl; // update balance to 0 balance = 0; } else { return 0; // or -1 if this is considered an erroneous transaction } } // otherwise else { // balance = balance - input balance -= desired_expenditure; } // DOESN"T WORK, can't reference input // cout << "Your input way back there was " << input; // print balance cout << "Your new balance is$" << balance << endl;

system("pause");
return 0;
} 