#include #include #define CL 0 #define DI 1 #define SP 2 #define HE 3 typedef struct { int val; char cval; int color; char ccolor; } TCard; TCard players[4][13]; TCard cards[53]; char c; int compare(const void* arg1, const void* arg2) { TCard c1 = *(TCard*)(arg1); TCard c2 = *(TCard*)(arg2); if (c1.color < c2.color) return -1; if (c1.color > c2.color) return 1; if (c1.val < c2.val) return -1; if (c1.val > c2.val) return 1; return 0; } void Add(int ix, char v1, char v2) { cards[ix].ccolor = v1; cards[ix].cval = v2; switch(v1) { case 'C': cards[ix].color = CL; break; case 'D': cards[ix].color = DI; break; case 'S': cards[ix].color = SP; break; case 'H': cards[ix].color = HE; break; } if (v2 >= '2' && v2 <= '9') cards[ix].val = v2 - '2'; if (v2 == 'T') cards[ix].val = 10; if (v2 == 'J') cards[ix].val = 11; if (v2 == 'Q') cards[ix].val = 12; if (v2 == 'K') cards[ix].val = 13; if (v2 == 'A') cards[ix].val = 14; } void Next(int &cur) { cur++; cur = cur % 4; } void Deal() { int deal; int ix[4]; ix[0] = 0; ix[1] = 0; ix[2] = 0; ix[3] = 0; if (c == 'N') deal = 0; if (c == 'E') deal = 1; if (c == 'S') deal = 2; if (c == 'W') deal = 3; Next(deal); for(int i = 0; i < 52; i++) { players[deal][ix[deal]++] = cards[i]; Next(deal); } for(int i = 0; i < 4; i++) qsort(players[i], 13, sizeof(TCard), compare); } void PrintCard(TCard &c, int line) { switch(line) { case 0: case 4: printf("+---"); break; case 1: case 3: printf("|%c %c", c.cval, c.cval); break; case 2: printf("| %c ", c.ccolor); break; } } void Print() { int ix; for(int i = 2; i < 6; i++) { ix = i % 4; switch(ix) { case 0: printf("North player:\n"); break; case 1: printf("East player:\n"); break; case 2: printf("South player:\n"); break; case 3: printf("West player:\n"); break; } for(int j = 0; j < 5; j++) { for(int k = 0; k < 13; k++) { PrintCard(players[ix][k], j); } switch(j) { case 0: case 4: printf("+\n"); break; case 1: case 2: case 3: printf("|\n"); break; } } } printf("\n"); } int main() { scanf("%c\n", &c); while(c != '#') { char v1, v2; int ix = 0; for(int i = 0; i < 26; i++) { scanf("%c%c", &v1, &v2); Add(ix++, v1, v2); // printf("%c%c", v1,v2); } scanf("\n"); for(int i = 0; i < 26; i++) { scanf("%c%c", &v1, &v2); Add(ix++, v1, v2); // printf("%c%c", v1,v2); } scanf("\n"); Deal(); Print(); scanf("%c\n", &c); } return 0; }