// Drew Duffey CSC5 Chapter 5, P.297, #19
//
/*******************************************************************************
*
* COMPUTE BUDGET
* _____________________________________________________________________________
* This program will take a budget amount, followed by a list of expenses, and
* determine how over/under budget the expenses are.
* _____________________________________________________________________________
* INPUT
* Budget : The total budget given
* Expense : The cost of an expense
*
* OUTPUT
* Over/Under : How over/under budget the expenses are
*
*******************************************************************************/
#include <iostream>
#include <iomanip>
using namespace std;
int main ( )
{
float budget; //INPUT - The total budget given
float expense; //INPUT - The cost of an expense
bool input; //CALC - Flag to check for the sentinel value
float remaining; //OUTPUT - How over/under budget the expenses are
float total; //CALC - Accumulator, the total amount of the expenses
//Input total budget
cout << "Enter your total monthly budget: " ;
cin >> budget;
cout << endl << endl;
input = true ;
//Loop for expense input
while ( input)
{
cout << "Please enter the amount of an expense for this month, " <<
"or input a negative value to stop:\n " ;
cin >> expense;
//Check for sentinel values, then break loop once one is entered
if ( expense <= 0 )
{
input = false ;
break ;
}
//Add expense to total
total + = expense;
}
//After looping, subtract expenses from total budget
remaining = budget - total;
//Display how much over/under the user is
cout << "\n You have " << fixed << setprecision( 2 ) << remaining <<
" left, and are " ;
if ( remaining <= 0 )
{
cout << "over budget." ;
}
else
{
cout << "under budget." ;
}
return 0 ;
}
Ly8gRHJldyBEdWZmZXkJCQlDU0M1CQkJQ2hhcHRlciA1LCBQLjI5NywgIzE5Ci8vIAovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAKICogQ09NUFVURSBCVURHRVQKICogX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KICogVGhpcyBwcm9ncmFtIHdpbGwgdGFrZSBhIGJ1ZGdldCBhbW91bnQsIGZvbGxvd2VkIGJ5IGEgbGlzdCBvZiBleHBlbnNlcywgYW5kCiAqIGRldGVybWluZSBob3cgb3Zlci91bmRlciBidWRnZXQgdGhlIGV4cGVuc2VzIGFyZS4KICogX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KICogSU5QVVQKICogQnVkZ2V0CQk6IFRoZSB0b3RhbCBidWRnZXQgZ2l2ZW4KICogRXhwZW5zZQkJOiBUaGUgY29zdCBvZiBhbiBleHBlbnNlCiAqIAogKiBPVVRQVVQKICogT3Zlci9VbmRlcgk6IEhvdyBvdmVyL3VuZGVyIGJ1ZGdldCB0aGUgZXhwZW5zZXMgYXJlCiAqIAoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxpb21hbmlwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgbWFpbiAoKQp7CglmbG9hdCBidWRnZXQ7Ly9JTlBVVCAtIFRoZSB0b3RhbCBidWRnZXQgZ2l2ZW4KCWZsb2F0IGV4cGVuc2U7Ly9JTlBVVCAtIFRoZSBjb3N0IG9mIGFuIGV4cGVuc2UKCWJvb2wgaW5wdXQ7Ly9DQUxDIC0gRmxhZyB0byBjaGVjayBmb3IgdGhlIHNlbnRpbmVsIHZhbHVlCglmbG9hdCByZW1haW5pbmc7Ly9PVVRQVVQgLSBIb3cgb3Zlci91bmRlciBidWRnZXQgdGhlIGV4cGVuc2VzIGFyZQoJZmxvYXQgdG90YWw7Ly9DQUxDIC0gQWNjdW11bGF0b3IsIHRoZSB0b3RhbCBhbW91bnQgb2YgdGhlIGV4cGVuc2VzCgkKCS8vSW5wdXQgdG90YWwgYnVkZ2V0Cgljb3V0IDw8ICJFbnRlciB5b3VyIHRvdGFsIG1vbnRobHkgYnVkZ2V0OiAiOwoJY2luID4+IGJ1ZGdldDsKCWNvdXQgPDwgZW5kbCA8PCBlbmRsOwoJaW5wdXQgPSB0cnVlOwoJCgkvL0xvb3AgZm9yIGV4cGVuc2UgaW5wdXQKCXdoaWxlIChpbnB1dCkKCXsKCQljb3V0IDw8ICJQbGVhc2UgZW50ZXIgdGhlIGFtb3VudCBvZiBhbiBleHBlbnNlIGZvciB0aGlzIG1vbnRoLCAiIDw8CgkJCSJvciBpbnB1dCBhIG5lZ2F0aXZlIHZhbHVlIHRvIHN0b3A6XG4iOwoJCWNpbiA+PiBleHBlbnNlOwoJCQoJCS8vQ2hlY2sgZm9yIHNlbnRpbmVsIHZhbHVlcywgdGhlbiBicmVhayBsb29wIG9uY2Ugb25lIGlzIGVudGVyZWQKCQlpZiAoZXhwZW5zZSA8PSAwKQoJCXsKCQkJaW5wdXQgPSBmYWxzZTsKCQkJYnJlYWs7CgkJfQoJCQoJCS8vQWRkIGV4cGVuc2UgdG8gdG90YWwKCQl0b3RhbCArPSBleHBlbnNlOwoJfQoJCgkvL0FmdGVyIGxvb3BpbmcsIHN1YnRyYWN0IGV4cGVuc2VzIGZyb20gdG90YWwgYnVkZ2V0CglyZW1haW5pbmcgPSBidWRnZXQgLSB0b3RhbDsKCQoJLy9EaXNwbGF5IGhvdyBtdWNoIG92ZXIvdW5kZXIgdGhlIHVzZXIgaXMKCWNvdXQgPDwgIlxuWW91IGhhdmUgIiA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oMikgPDwgcmVtYWluaW5nIDw8IAoJCSIgbGVmdCwgYW5kIGFyZSAiOyAKCQoJaWYgKHJlbWFpbmluZyA8PSAwKQoJewoJCWNvdXQgPDwgIm92ZXIgYnVkZ2V0LiI7Cgl9CgllbHNlCgl7CgkJY291dCA8PCAidW5kZXIgYnVkZ2V0LiI7Cgl9CnJldHVybiAwOwp9