//Mia Agramon CS1A Chapter 11, P.648, #13
//
/*******************************************************************************
* Drink Dispenser
* _____________________________________________________________________________
* This programs simulates a drink machine that dispense: cola, root beer,
* lemon-lime, grape soda, and cream soda.
*
* INPUT
* pick a drink
* payment
* OUTPUT
* drink
* change
* total amount of money earned
******************************************************************************/
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
struct vendingMachine
{
string drinkName;
float drinkCost;
int amountDrinks;
} ;
//Function Prototype
void menu ( vendingMachine soda[ ] , int numDrinks, float & moneyEarned) ;
//Global Constants
const int numDRINKS = 5 ;
int main( )
{
//Initialize Variables
int choice = 0 ;
float payment;
float change;
float moneyEarned = 0 ;
vendingMachine drinks[ numDRINKS] = {
{ "Cola" , 0.75 , 20 } ,
{ "Root Beer" , 0.75 , 20 } ,
{ "Lemon-Lime" , 0.75 , 20 } ,
{ "Grape Soda" , 0.80 , 20 } ,
{ "Cream Soda" , 0.80 , 20 } ,
} ;
cout << setprecision( 2 ) << fixed << showpoint;
//Call Function
menu( drinks, numDRINKS, moneyEarned) ;
return 0 ;
}
//Menu Function
void menu ( vendingMachine soda[ ] , int numDrinks, float & moneyEarned)
{
int choice;
float payment;
float change;
cout << " MENU " << endl;
for ( int i = 0 ; i < numDrinks; i++ )
{
cout << i + 1 << ". " << soda[ i] .drinkName << " - $" << soda[ i] .drinkCost << endl;
}
cout << "Please enter the number of the drink you want: " ;
cin >> choice;
cout << endl;
//Input Validation
if ( choice < 1 || choice > numDrinks)
{
cout << "Invalid" << endl;
menu( soda, numDrinks, moneyEarned) ;
return ;
}
cout << "Enter money: " << soda[ choice - 1 ] .drinkCost ;
cin >> payment;
cout << endl;
if ( payment < soda[ choice - 1 ] .drinkCost )
{
cout << "Please try again." << endl;
menu( soda, numDrinks, moneyEarned) ;
return ;
}
soda[ choice - 1 ] .amountDrinks -- ;
change = payment - soda[ choice - 1 ] .drinkCost ;
moneyEarned + = soda[ choice - 1 ] .drinkCost ;
cout << "Enjoy your " << soda[ choice - 1 ] .drinkName << "!" << endl;
cout << "Change :$" << change << endl;
}
Ly9NaWEgQWdyYW1vbiAgICAgICAgICAgICAgICAgICAgICAgQ1MxQSAgICAgICAgICAgICAgICAgIENoYXB0ZXIgMTEsIFAuNjQ4LCAjMTMKLy8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogRHJpbmsgRGlzcGVuc2VyCiAqIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiAqIFRoaXMgcHJvZ3JhbXMgc2ltdWxhdGVzIGEgZHJpbmsgbWFjaGluZSB0aGF0IGRpc3BlbnNlOiBjb2xhLCByb290IGJlZXIsCiAqIGxlbW9uLWxpbWUsIGdyYXBlIHNvZGEsIGFuZCBjcmVhbSBzb2RhLgogKiAKICogSU5QVVQKICogICAgcGljayBhIGRyaW5rCiAqICAgIHBheW1lbnQKICogT1VUUFVUCiAqICAgIGRyaW5rCiAqICAgIGNoYW5nZQogKiAgICB0b3RhbCBhbW91bnQgb2YgbW9uZXkgZWFybmVkCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8aW9tYW5pcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCB2ZW5kaW5nTWFjaGluZQp7CglzdHJpbmcgZHJpbmtOYW1lOwoJZmxvYXQgZHJpbmtDb3N0OwoJaW50IGFtb3VudERyaW5rczsKfTsKCi8vRnVuY3Rpb24gUHJvdG90eXBlCnZvaWQgbWVudSAodmVuZGluZ01hY2hpbmUgc29kYVtdLCBpbnQgbnVtRHJpbmtzLCBmbG9hdCAmbW9uZXlFYXJuZWQpOwoKLy9HbG9iYWwgQ29uc3RhbnRzCmNvbnN0IGludCBudW1EUklOS1MgPSA1OwoKaW50IG1haW4oKSAKewoJLy9Jbml0aWFsaXplIFZhcmlhYmxlcwoJaW50IGNob2ljZSA9IDA7CglmbG9hdCBwYXltZW50OwoJZmxvYXQgY2hhbmdlOwoJZmxvYXQgbW9uZXlFYXJuZWQgPSAwOwoJCgl2ZW5kaW5nTWFjaGluZSBkcmlua3NbbnVtRFJJTktTXSA9IHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJDb2xhIiwgMC43NSwgMjB9LAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IlJvb3QgQmVlciIsIDAuNzUsIDIwfSwKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJMZW1vbi1MaW1lIiwgMC43NSwgMjB9LAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IkdyYXBlIFNvZGEiLCAwLjgwLCAyMH0sCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiQ3JlYW0gU29kYSIsIDAuODAsIDIwfSwKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgljb3V0IDw8IHNldHByZWNpc2lvbigyKSA8PCBmaXhlZCA8PCBzaG93cG9pbnQ7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoJLy9DYWxsIEZ1bmN0aW9uCgltZW51KGRyaW5rcywgbnVtRFJJTktTLCBtb25leUVhcm5lZCk7CgkKCXJldHVybiAwOwp9CgovL01lbnUgRnVuY3Rpb24Kdm9pZCBtZW51ICh2ZW5kaW5nTWFjaGluZSBzb2RhW10sIGludCBudW1Ecmlua3MsIGZsb2F0ICZtb25leUVhcm5lZCkKewoJaW50IGNob2ljZTsKCWZsb2F0IHBheW1lbnQ7CglmbG9hdCBjaGFuZ2U7Cgljb3V0IDw8ICIJTUVOVQkiIDw8IGVuZGw7Cglmb3IgKGludCBpID0gMDsgaSA8IG51bURyaW5rczsgaSsrKQoJewoJCWNvdXQgPDwgaSArIDEgPDwgIi4gIiA8PCBzb2RhW2ldLmRyaW5rTmFtZSA8PCAiIC0gJCIgPDwgc29kYVtpXS5kcmlua0Nvc3QgPDwgZW5kbDsKCX0KCQoJY291dCA8PCAiUGxlYXNlIGVudGVyIHRoZSBudW1iZXIgb2YgdGhlIGRyaW5rIHlvdSB3YW50OiAiOwoJY2luID4+IGNob2ljZTsKCWNvdXQgPDwgZW5kbDsKCQoJLy9JbnB1dCBWYWxpZGF0aW9uCglpZiAoY2hvaWNlIDwgMSB8fCBjaG9pY2UgPiBudW1Ecmlua3MpCgl7CgkJY291dCA8PCAiSW52YWxpZCIgPDwgZW5kbDsKCQltZW51KHNvZGEsIG51bURyaW5rcywgbW9uZXlFYXJuZWQpOwoJCXJldHVybjsKCX0KCQoJY291dCA8PCAiRW50ZXIgbW9uZXk6ICIgPDwgc29kYVtjaG9pY2UgLSAxXS5kcmlua0Nvc3Q7CgljaW4gPj4gcGF5bWVudDsKCWNvdXQgPDwgZW5kbDsKCQoJaWYgKHBheW1lbnQgPCBzb2RhW2Nob2ljZSAtIDFdLmRyaW5rQ29zdCkKCXsKCQljb3V0IDw8ICJQbGVhc2UgdHJ5IGFnYWluLiIgPDwgZW5kbDsKCQltZW51KHNvZGEsIG51bURyaW5rcywgbW9uZXlFYXJuZWQpOwoJCXJldHVybjsKCX0KCQoJc29kYVtjaG9pY2UgLSAxXS5hbW91bnREcmlua3MtLTsKCWNoYW5nZSA9IHBheW1lbnQgLSBzb2RhW2Nob2ljZSAtIDFdLmRyaW5rQ29zdDsKCW1vbmV5RWFybmVkICs9IHNvZGFbY2hvaWNlIC0gMV0uZHJpbmtDb3N0OwoJCgljb3V0IDw8ICJFbmpveSB5b3VyICIgPDwgc29kYVtjaG9pY2UgLSAxXS5kcmlua05hbWUgPDwgIiEiIDw8IGVuZGw7Cgljb3V0IDw8ICJDaGFuZ2UgOiQiIDw8IGNoYW5nZSA8PCBlbmRsOwp9