#include <iostream>
#include <string>
class Drinks {
private:
std::string name;
double price;
int qtyInMachine;
public:
Drinks(std::string n, double p, int qty) : name(n), price(p), qtyInMachine(qty) {}
std::string getName() const { return name; }
};
class VendingMachine {
private:
static const int NUM_DRINKS = 5;
static const Drinks drinks[NUM_DRINKS]; // Suggestion: Use std::vector here
public:
static int getMaxNumOfDrinks() { return NUM_DRINKS; }
static Drinks getDrink(const int i) { return drinks[i]; } // TODO: Add error handling here!!!
VendingMachine(){}
};
const Drinks VendingMachine::drinks[VendingMachine::NUM_DRINKS] {Drinks("Cola",1.25,20),
Drinks("Root Beer",1.35,20),Drinks("Orange Soda",1.20,20),Drinks("Grape Soda",1.20,20),
Drinks("Bottled Water",1.55,20)};
int main() {
VendingMachine vm1;
for (int i = 0; i < VendingMachine::getMaxNumOfDrinks(); i++) {
std::cout << VendingMachine::getDrink(i).getName() << " ";
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKY2xhc3MgRHJpbmtzIHsKICAgcHJpdmF0ZToKICAgICAgc3RkOjpzdHJpbmcgbmFtZTsKICAgICAgZG91YmxlIHByaWNlOwogICAgICBpbnQgcXR5SW5NYWNoaW5lOwogICBwdWJsaWM6CiAgICAgIERyaW5rcyhzdGQ6OnN0cmluZyBuLCBkb3VibGUgcCwgaW50IHF0eSkgOiBuYW1lKG4pLCBwcmljZShwKSwgcXR5SW5NYWNoaW5lKHF0eSkge30KICAgICAgc3RkOjpzdHJpbmcgZ2V0TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG5hbWU7IH0KfTsKCmNsYXNzIFZlbmRpbmdNYWNoaW5lIHsKICAgcHJpdmF0ZToKICAgICAgc3RhdGljIGNvbnN0IGludCBOVU1fRFJJTktTID0gNTsKICAgICAgc3RhdGljIGNvbnN0IERyaW5rcyBkcmlua3NbTlVNX0RSSU5LU107CQkJCQkvLyBTdWdnZXN0aW9uOiBVc2Ugc3RkOjp2ZWN0b3IgaGVyZQogICAKICAgcHVibGljOgogICAgICBzdGF0aWMgaW50IGdldE1heE51bU9mRHJpbmtzKCkgeyByZXR1cm4gTlVNX0RSSU5LUzsgfQogICAgICBzdGF0aWMgRHJpbmtzIGdldERyaW5rKGNvbnN0IGludCBpKSB7IHJldHVybiBkcmlua3NbaV07IH0gIC8vIFRPRE86IEFkZCBlcnJvciBoYW5kbGluZyBoZXJlISEhCiAgICAgIAogICAgICBWZW5kaW5nTWFjaGluZSgpe30KfTsKCmNvbnN0IERyaW5rcyBWZW5kaW5nTWFjaGluZTo6ZHJpbmtzW1ZlbmRpbmdNYWNoaW5lOjpOVU1fRFJJTktTXSB7RHJpbmtzKCJDb2xhIiwxLjI1LDIwKSwKICAgICAgRHJpbmtzKCJSb290IEJlZXIiLDEuMzUsMjApLERyaW5rcygiT3JhbmdlIFNvZGEiLDEuMjAsMjApLERyaW5rcygiR3JhcGUgU29kYSIsMS4yMCwyMCksCiAgICAgIERyaW5rcygiQm90dGxlZCBXYXRlciIsMS41NSwyMCl9OwoKaW50IG1haW4oKSB7CiAgIFZlbmRpbmdNYWNoaW5lIHZtMTsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCBWZW5kaW5nTWFjaGluZTo6Z2V0TWF4TnVtT2ZEcmlua3MoKTsgaSsrKSB7CiAgICAgIHN0ZDo6Y291dCA8PCBWZW5kaW5nTWFjaGluZTo6Z2V0RHJpbmsoaSkuZ2V0TmFtZSgpIDw8ICIgIjsKICAgfQp9