#include #include #include #include int get_line(char *s, int max) { int i; fgets(s,max,stdin); i = strlen(s) - 1; while (i >= 0 && s[i] == '\n') i--; i++; s[i] = 0; return i; } int sgetint(char **s, int *x) { char *t = *s; while (isspace(*t)) t++; if (sscanf(t,"%d",x) != 1) return 0; while (*t && !isspace(*t)) t++; *s = t; return 1; } int iplayer[256]; int icolor[256]; int iname[256]; char color[5] = "CDSH"; char name[14] = "23456789TJQKA"; char bf[4][13][4]; char tcol[13]; char tix[13]; void pcard(int pl) { int i, col, rank, last; last = 0; for (col = 0; col < 4; col++) { for (rank = 0; rank < 13; rank++) { if (bf[pl][rank][col] == 1) { tcol[last] = color[col]; tix[last++] = name[rank]; } } } printf("+---+---+---+---+---+---+---+---+---+---+---+---+---+\n"); printf("|"); for (i = 0; i< 13; i++) { printf("%c %c|",tix[i],tix[i]); } printf("\n|"); for (i = 0; i< 13; i++) { printf(" %c |",tcol[i]); } printf("\n|"); for (i = 0; i< 13; i++) { printf("%c %c|",tix[i],tix[i]); } printf("\n+---+---+---+---+---+---+---+---+---+---+---+---+---+\n"); } int main(void) { char line[203]; char deal; int t, curr, x, next; char *s; iplayer['N'] = 0; iplayer['E'] = 1; iplayer['S'] = 2; iplayer['W'] = 3; icolor['C'] = 0; icolor['D'] = 1; icolor['S'] = 2; icolor['H'] = 3; iname['2'] = 0; iname['3'] = 1; iname['4'] = 2; iname['5'] = 3; iname['6'] = 4; iname['7'] = 5; iname['8'] = 6; iname['9'] = 7; iname['T'] = 8; iname['J'] = 9; iname['Q'] = 10; iname['K'] = 11; iname['A'] = 12; next =0; while (1) { get_line(line,100); deal = line[0]; if (deal == '#') break; curr = (iplayer[(int)deal] + 1) % 4; x = get_line(line,100); get_line(&line[x],100); memset(bf,0,sizeof(bf)); s = line; for (t = 0 ; t < 4*13; t++) { bf[curr][iname[(int)*(s+1)]][icolor[(int)*(s)]] = 1; s+=2; curr = (curr+1)%4; } if (next) putchar('\n'); next = 1; printf("South player:\n"); pcard(2); printf("West player:\n"); pcard(3); printf("North player:\n"); pcard(0); printf("East player:\n"); pcard(1); } return 0; }