#include #include #define HANDSIZE 15 int transform(int col, int val) { int ret; switch (col) { case 'C': ret = 0; break; case 'D': ret = 100; break; case 'S': ret = 200; break; case 'H': ret = 300; break; } switch (val) { case 'T': ret += 10; break; case 'J': ret += 11; break; case 'Q': ret += 12; break; case 'K': ret += 13; break; case 'A': ret += 14; break; default: ret += (int)val - '2' + 2; } return ret; } void printVal(int val) { val = val % 100; if (val > 9) { switch (val) { case 10: printf("T T"); break; case 11: printf("J J"); break; case 12: printf("Q Q"); break; case 13: printf("K K"); break; case 14: printf("A A"); break; } } else { printf("%d %d",val,val); } } void printCol(int col) { col = col/100; switch (col) { case 0: printf(" C "); break; case 1: printf(" D "); break; case 2: printf(" S "); break; case 3: printf(" H "); break; } } int compare(const void *a, const void *b) { int *aa = (int *) a; int *bb = (int *) b; if (*aa > *bb) return 1; if (*bb > *aa) return -1; return 0; } int main(void) { char dealer; char col,val; int deck[4][HANDSIZE]; int i,j; int offset, idx; char label[4][20] = { "South player", "West player", "North player", "East player" }; for(;;) { scanf("%c ",&dealer); if (dealer == '#') break; for(i = 0; i < 52; i++) { scanf("%c%c ",&col,&val); deck[i%4][i/4] = transform(col, val); } switch (dealer) { case 'E': offset = 0; break; case 'S': offset = 3; break; case 'W': offset = 2; break; case 'N': offset = 1; break; } for(i = 0; i < 4; i++) { idx = (i + offset) % 4; printf("%s:\n",label[i]); qsort(deck[idx],13,sizeof(int),compare); printf("+---+---+---+---+---+---+---+---+---+---+---+---+---+\n"); printf("|"); for(j = 0; j < 13; j++) { printVal(deck[idx][j]); printf("|"); } printf("\n|"); for(j = 0; j < 13; j++) { printCol(deck[idx][j]); printf("|"); } printf("\n|"); for(j = 0; j < 13; j++) { printVal(deck[idx][j]); printf("|"); } printf("\n+---+---+---+---+---+---+---+---+---+---+---+---+---+\n"); } } return 0; }