#include #include #include int char2deck(char suit, char card) { int st, cr; if(suit == 'C') st = 100; else if(suit == 'D') st = 200; else if(suit == 'S') st = 300; else st = 400; if(card == 'T') cr = 10; else if(card == 'J') cr = 11; else if(card == 'Q') cr = 12; else if(card == 'K') cr = 13; else if(card == 'A') cr = 14; else cr = card - '0'; return st+cr; } char deck2suit(int d) { if(d >= 400) return 'H'; else if(d >= 300) return 'S'; else if(d >= 200) return 'D'; else return 'C'; } const char d2c[] = "0123456789TJQKA"; char deck2card(int d) { d = d % 100; return d2c[d]; } int n[20],w[20],s[20],e[20]; int pn, pw, ps, pe; char x[100]; void deal(int pos, char dealer) { if(pos >= strlen(x)) return; if(dealer == 'N') { e[pe++] = char2deck(x[pos],x[pos+1]); deal(pos+2, 'E'); } else if(dealer == 'E') { s[ps++] = char2deck(x[pos],x[pos+1]); deal(pos+2, 'S'); } else if(dealer == 'S') { w[pw++] = char2deck(x[pos],x[pos+1]); deal(pos+2, 'W'); } else { //dealer == 'W' n[pn++] = char2deck(x[pos],x[pos+1]); deal(pos+2, 'N'); } } int compar(const void *a, const void *b) { int aa = *((int*)a); int bb = *((int*)b); if(aa < bb) return -1; else if (aa == bb) return 0; else return 1; } void sort(int *co) { qsort(co, 13, sizeof(int), compar); } void out(int *co) { int i, j; for(i=0; i<13; i++) printf("+---"); printf("+\n"); for(i=0; i<13; i++) { printf("|%c %c",deck2card(co[i]),deck2card(co[i])); } printf("|\n"); for(i=0; i<13; i++) { printf("| %c ",deck2suit(co[i])); } printf("|\n"); for(i=0; i<13; i++) { printf("|%c %c",deck2card(co[i]),deck2card(co[i])); } printf("|\n"); for(i=0; i<13; i++) printf("+---"); printf("+\n"); } int main(void) { char dealer; gets(x); dealer = x[0]; while(dealer != '#') { pe = 0; pw = 0; ps = 0; pn = 0; gets(x); gets(x+strlen(x)); printf("%s\n",x); deal(0, dealer); sort(n); sort(w); sort(s); sort(e); printf("South player:\n"); out(s); printf("West player:\n"); out(w); printf("North player:\n"); out(n); printf("East player:\n"); out(e); printf("\n"); gets(x); dealer = x[0]; if(dealer != '#') printf("\n"); } }