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;
}
Back to top