~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;
}