#include <iostream>
enum suit { hearts, diamonds, spades, clubs} ;
enum value { two, three, four, five, six, seven, eight, nine, ten, jack, queen, king, ace} ;
struct card
{
value v;
suit s;
} ;
static const int num_players = 4 ;
static const char * suits[ ] = { "Hearts" , "Diamonds" , "Spades" , "Clubs" } ;
static const char * values[ ] = { "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "10" , "Jack" , "Queen" , "King" , "Ace" } ;
std:: ostream & operator<< ( std:: ostream & out, const card & c)
{
out << values[ c.v ] << " of " << suits[ c.s ] ;
return out;
}
void get_winner( const card ( & hands) [ num_players] [ 2 ] , const card ( & mid_cards) [ 5 ] )
{
for ( int i = 0 ; i < 5 ; i++ ) {
std:: cout << "Middle card " << i + 1 << ": " << mid_cards[ i] << "\n " ;
}
for ( int i = 0 ; i < num_players; i++ ) {
std:: cout << "Player " << i + 1 << "hand: " << hands[ i] [ 0 ] << ", " << hands[ i] [ 1 ] << "\n " ;
}
}
int main( )
{
card hands[ num_players] [ 2 ] ;
card mid_cards[ 5 ] ;
// fill hands and mid_cards with card structs
hands[ 0 ] [ 0 ] = card { jack, hearts} ;
hands[ 0 ] [ 1 ] = card { nine, spades} ;
hands[ 1 ] [ 0 ] = card { ace, clubs} ;
hands[ 1 ] [ 1 ] = card { ace, hearts} ;
hands[ 2 ] [ 0 ] = card { three, diamonds} ;
hands[ 2 ] [ 1 ] = card { seven, spades} ;
hands[ 3 ] [ 0 ] = card { eight, diamonds} ;
hands[ 3 ] [ 1 ] = card { nine, clubs} ;
mid_cards[ 0 ] = card { five, clubs} ;
mid_cards[ 1 ] = card { king, hearts} ;
mid_cards[ 2 ] = card { queen, spades} ;
mid_cards[ 3 ] = card { two, clubs} ;
mid_cards[ 4 ] = card { ace, hearts} ;
get_winner( hands, mid_cards) ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKZW51bSBzdWl0IHtoZWFydHMsIGRpYW1vbmRzLCBzcGFkZXMsIGNsdWJzfTsKZW51bSB2YWx1ZSB7dHdvLCB0aHJlZSwgZm91ciwgZml2ZSwgc2l4LCBzZXZlbiwgZWlnaHQsIG5pbmUsIHRlbiwgamFjaywgcXVlZW4sIGtpbmcsIGFjZX07CgpzdHJ1Y3QgY2FyZCAKewogICAgdmFsdWUgdjsKICAgIHN1aXQgczsKfTsKc3RhdGljIGNvbnN0IGludCBudW1fcGxheWVycyA9IDQ7CgpzdGF0aWMgY29uc3QgY2hhciogc3VpdHNbXSA9IHsiSGVhcnRzIiwgIkRpYW1vbmRzIiwgIlNwYWRlcyIsICJDbHVicyJ9OwpzdGF0aWMgY29uc3QgY2hhciogdmFsdWVzW10gPSB7IjIiLCAiMyIsICI0IiwgIjUiLCAiNiIsICI3IiwgIjgiLCAiOSIsICIxMCIsICJKYWNrIiwgIlF1ZWVuIiwgIktpbmciLCAiQWNlIn07CgpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvdXQsIGNvbnN0IGNhcmQgJmMpCnsKCW91dCA8PCB2YWx1ZXNbYy52XSA8PCAiIG9mICIgPDwgc3VpdHNbYy5zXTsKCXJldHVybiBvdXQ7Cn0KCnZvaWQgZ2V0X3dpbm5lcihjb25zdCBjYXJkICgmaGFuZHMpW251bV9wbGF5ZXJzXVsyXSwgY29uc3QgY2FyZCAoJm1pZF9jYXJkcylbNV0pCnsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJNaWRkbGUgY2FyZCAiIDw8IGkgKyAxIDw8ICI6ICIgPDwgbWlkX2NhcmRzW2ldIDw8ICJcbiI7CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fcGxheWVyczsgaSsrKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJQbGF5ZXIgIiA8PCBpICsgMSA8PCAiaGFuZDogIiA8PCBoYW5kc1tpXVswXSA8PCAiLCAiIDw8IGhhbmRzW2ldWzFdIDw8ICJcbiI7CiAgICB9Cn0KCmludCBtYWluKCkKewogICAgY2FyZCBoYW5kc1tudW1fcGxheWVyc11bMl07CiAgICBjYXJkIG1pZF9jYXJkc1s1XTsKICAgIC8vIGZpbGwgaGFuZHMgYW5kIG1pZF9jYXJkcyB3aXRoIGNhcmQgc3RydWN0cwogICAgaGFuZHNbMF1bMF0gPSBjYXJkIHtqYWNrLCBoZWFydHN9OwogICAgaGFuZHNbMF1bMV0gPSBjYXJkIHtuaW5lLCBzcGFkZXN9OwogICAgaGFuZHNbMV1bMF0gPSBjYXJkIHthY2UsIGNsdWJzfTsKICAgIGhhbmRzWzFdWzFdID0gY2FyZCB7YWNlLCBoZWFydHN9OwogICAgaGFuZHNbMl1bMF0gPSBjYXJkIHt0aHJlZSwgZGlhbW9uZHN9OwogICAgaGFuZHNbMl1bMV0gPSBjYXJkIHtzZXZlbiwgc3BhZGVzfTsKICAgIGhhbmRzWzNdWzBdID0gY2FyZCB7ZWlnaHQsIGRpYW1vbmRzfTsKICAgIGhhbmRzWzNdWzFdID0gY2FyZCB7bmluZSwgY2x1YnN9OwogICAgbWlkX2NhcmRzWzBdID0gY2FyZCB7Zml2ZSwgY2x1YnN9OwogICAgbWlkX2NhcmRzWzFdID0gY2FyZCB7a2luZywgaGVhcnRzfTsKICAgIG1pZF9jYXJkc1syXSA9IGNhcmQge3F1ZWVuLCBzcGFkZXN9OwogICAgbWlkX2NhcmRzWzNdID0gY2FyZCB7dHdvLCBjbHVic307CiAgICBtaWRfY2FyZHNbNF0gPSBjYXJkIHthY2UsIGhlYXJ0c307CiAgICBnZXRfd2lubmVyKGhhbmRzLCBtaWRfY2FyZHMpOwp9