No older revisions available
No older revisions available
~cpp
#include <ctime>
#include <iostream>
#include <stdexcept>
#include <string>
#include <VECTOR>
using namespace std;
struct board{
string table;
string game;
int person;
int hour;
int minute;
int drink;
};
void input(board& bg, vector<board>& vec);
void in(board& bg, vector<board>& vec);
void play(board& bg, vector<board>& vec);
void buy(board& bg, vector<board>& vec);
void out(board& bg, vector<board>& vec);
void print_time(int& hour, int& minute);
int price(vector<board>& vec, int hour, int minute, const int& i);
const string tables[] ={"table1", "table2", "table3"};
const string games[] = {"jenga", "citadell", "pit"};
int main()
{
board bg;
bg.drink = 0;
vector<board> vec;
vec.resize(3);
input(bg, vec);
return 0;
}
void input(board& bg, vector<board>& vec)
{
string command;
while(cin >> command)
{
try
{
if (command == "exit")
break;
if (command =="in")
in(bg, vec);
else if(command =="play")
play(bg, vec);
else if(command =="out")
out(bg, vec);
else if(command =="buy")
buy(bg, vec);
else
throw domain_error("잘못 입력하셨습니다.");
}
catch(domain_error e)
{
cout << e.what() << endl;
}
}
}
void in(board& bg, vector<board>& vec)
{
cin >> bg.table;
for (int i = 0 ; i < 3 ; i++)
{
if(tables[i] == bg.table)
{
if (vec[i].table == bg.table)
{
throw domain_error("그 테이블은 사용중 입니다.");
return;
}
else
{
cin >> bg.person;
if (bg.person > 0 && bg.person < 5)
{
vec[i].table = bg.table;
int hour, minute;
print_time(hour, minute);
bg.hour = hour;
bg.minute = minute;
vec[i].hour = bg.hour;
vec[i].minute = bg.minute;
cout << bg.table << " : " << bg.person << "person : " << vec[i].hour << ":"
<<vec[i].minute << endl;
vec[i].person = bg.person;
}
else
{
throw domain_error("사람은 4명까지만 할 수 있습니다.");
vec.pop_back();
}
return;
}
}
else if (i == 2 && tables[i] != bg.table)
throw domain_error("테이블은 3번까지만 있습니다.");
}
}
void play(board& bg, vector<board>& vec)
{
cin >> bg.table;
for(int i = 0; i < 3 ;i++)
{
if(vec[i].table == bg.table)
{
cin >> bg.game;
for (int j =0; j < 3; j++)
{
if (games[j] == bg.game)
{
vec[i].game = bg.game;
if (vec[i-1].game == vec[i].game)
{
throw domain_error("그 게임은 사용중 입니다.");
vec[i].game = ' ';
return;
}
else
{
cout << vec[i].table << " " << bg.game << " " << "play" << endl;
return;
}
}
else if (j == 2 && games[j] != bg.game)
{
throw domain_error("그런 게임은 없습니다. ");
return;
}
}
}
else if(i == 2 && vec[i].table != bg.table)
throw domain_error("in을 먼저 입력하십시오.");
}
}
void buy(board&bg, vector<board>& vec)
{
cin >> bg.table;
for(int i = 0; i < 3 ;i++)
{
if(vec[i].table == bg.table)
{
cin >> bg.drink;
if(bg.drink > 0)
{
cout << vec[i].table << " buy " << bg.drink << "drink" << endl;
vec[i].drink = bg.drink;
}
else
{
throw domain_error("잘못 입력하셨습니다.");
vec[i].drink = 0;
}
return;
}
else if(i == 2 && vec[i].table != bg.table)
throw domain_error("in을 먼저 입력하십시오.");
}
}
void out(board& bg, vector<board>& vec)
{
cin >> bg.table;
for (int i =0; i < 3 ;i++)
{
int hour, minute;
print_time(hour, minute);
if(vec[i].table == bg.table)
{
cout << vec[i].hour << ":" << vec[i].minute << " ~ " << hour << ":" << minute << " : "
<< vec[i].person << "Person : " << price(vec, hour, minute, i) << "won" << endl;
vec.erase(vec.begin() + i);
return;
}
else if(i ==2 && vec[i].table != bg.table)
throw domain_error("in을 먼저 입력하십시오.");
}
}
void print_time(int& hour, int& minute)
{
time_t current;
tm *today;
time(¤t);
today = localtime(¤t);
hour = today->tm_hour;
minute = today->tm_min;
}
int price(vector<board>& vec, int hour, int minute, const int& i)
{
hour -= vec[i].hour;
minute -= vec[i].minute;
if (minute < 0)
{
hour--;
minute += 60;
}
return (hour * 1600 + (minute / 30) * 800) * vec[i].person + (vec[i].drink * 500);
}