~cpp #include <iostream> #include <cstring> using namespace std; int selection, num; class Man{ public: void select(){ selection = 0; while (selection < 1 || selection > num){ cout << ">> "; cin >> selection; if (selection < 1 || selection > num) cout << "잘못 입력하셨습니다. n"; } }; }; class CoinCounter{ public: int remainders, coin; void resetCoins(){ remainders = 0; }; void showRemainders(){ cout << "REMAINDERS : " << remainders << endl; }; void insertCoins(){ cout << "돈을 넣으세요.n 1. 10원 n 2. 50원 n 3. 100원 n 4. 500원 n 5. 1000원 n>> "; cin >> coin; if (coin == 1) coin = 10; else if (coin == 2) coin = 50; else if (coin == 3) coin = 100; else if (coin == 4) coin = 500; else if (coin == 5) coin = 1000; else coin = 0; remainders += coin; cout << coin <<"원을 넣으셨습니다. n잔액은 " << remainders << "입니다.n"; }; void pay(int used){ cout << used << "원을 사용하셨습니다.n"; remainders -= used; }; }; class VendingMachine{ public: void showMenu(){ num = 4; cout << "MAIN MENU n 1. INSERT COIN n 2. BUY n 3. RETURN THE REMAINDERS n 4. EXIT n"; }; }; class Drink{ public: struct drinks{ char name[10]; int price; int quantity; }; drinks detail[3]; Drink(){ strcpy(detail[0].name, "사이다"); strcpy(detail[1].name, "콜라"); strcpy(detail[2].name, "2% 부족"); detail[0].price = 500; detail[1].price = 400; detail[2].price = 600; for (int i = 0 ; i < 3 ; i++) detail[i].quantity = 10; }; void showDetails(){ num = 3; cout << " 상품명t 가격t 수량n"; for (int i = 0 ; i < 3; i++) cout << i+1 << ". " << detail[i].name << "t" << detail[i].price << "t" << detail[i].quantity << endl; }; int buy(int remainders){ if (remainders >= detail[selection - 1].price && detail[selection - 1].quantity != 0){ cout << detail[selection - 1].name << "을 선택하셨습니다.n"; detail[selection - 1].quantity--; return detail[selection - 1].price; } else if (detail[selection - 1].price > remainders) cout << "잔액이 부족합니다.n"; else if (detail[selection - 1].quantity == 0) cout << "매진되었습니다. 다른 상품을 골라주십시오.n"; return 0; }; }; int main(){ Man man; CoinCounter coin_counter; VendingMachine vending_machine; Drink drink; int usedmoney; coin_counter.resetCoins(); while(selection != 4) { vending_machine.showMenu(); coin_counter.showRemainders(); man.select(); if (selection == 1) coin_counter.insertCoins(); else if (selection == 2){ drink.showDetails(); man.select(); usedmoney = drink.buy(coin_counter.remainders); coin_counter.pay(usedmoney); } else if (selection == 3){ cout << "잔액을 반환합니다.n"; coin_counter.resetCoins(); } else if (selection == 4) break; else cout << "잘못 입력하셨습니다.n"; system("pause"); system("cls"); }; return 0; }