Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- struct card
- {
- char rank,suite;
- };
- struct card c[5],temp;
- int ranks[14],suites[17];
- int main(void)
- {
- char t,i,j,k,in_seq=0,same_suit=0,flag,in[3];
- scanf("%d",&t);
- //cout<<"\nt="<<t;
- while(t--)
- {
- //cout<<"\nt in while ="<<t;
- for(i=0;i<14;i++)
- ranks[i]=0;
- suites[0]=suites[1]=suites[5]=suites[16]=0;
- flag=in_seq=same_suit=0;
- //cout<<"\n1. t="<<t;
- fflush(stdin);
- for(i=0;i<5;i++)
- {
- //cout<<"\n0. t="<<t;
- scanf("%s",&in);
- //cout<<"\n"<<in;
- if(in[0]>='2' && in[0]<='9')
- c[i].rank=in[0]-'0';
- else if(in[0]=='A')
- c[i].rank=1;
- else if(in[0]=='T')
- c[i].rank=10;
- else if(in[0]=='J')
- c[i].rank=11;
- else if(in[0]=='Q')
- c[i].rank=12;
- else if(in[0]=='K')
- c[i].rank=13;
- ranks[c[i].rank-1]++;
- c[i].suite=in[1];
- suites[c[i].suite-'C']++;
- //cout<<"\n3. t="<<t;
- //sort according to rank
- for(j=0;j<i;j++)
- if(c[j].rank>c[i].rank)
- break;
- if(j<i)
- {
- temp=c[i];
- for(k=i;k>j;k--)
- c[k]=c[k-1];
- c[j]=temp;
- }
- }
- //cout<<"\n2. t="<<t;
- //cout<<"\nafter sort: \n";
- //for(i=0;i<5;i++)
- //cout<<(int)c[i].rank<<c[i].suite<<" ";
- //cards in sorted rank
- //check for same suit
- if(suites[0]==5||suites[1]==5||suites[5]==5||suites[16]==5)
- same_suit=1;
- //check for sequence
- for(i=1;i<5;i++)
- if(c[i].rank!=c[i-1].rank+1)
- break;
- if(i==5)
- in_seq=1;
- //cout<<"\nin_seq="<<(int)in_seq<<" same_suit="<<(int)same_suit<<"\n";
- //royal flush
- if( (c[0].rank==1&&c[1].rank==10&&c[2].rank==11&&c[3].rank==12&&c[4].rank==13))
- {
- if(same_suit)
- printf("royal flush\n");
- else printf("straight\n");
- flag=1;
- }
- else if(in_seq&&same_suit)
- {
- printf("straight flush\n");
- flag=1;
- }
- else
- {
- for(i=0;i<5;i++)
- if(ranks[c[i].rank-1]==4)
- break;
- if(i<5)
- {
- printf("four of a kind\n");
- flag=1;
- }
- }
- if(!flag)
- {
- for(i=0;i<5;i++)
- if(ranks[c[i].rank-1]==3)
- break;
- if(i<5)
- {
- for(i=0;i<5;i++)
- if(ranks[c[i].rank-1]==2)
- break;
- if(i<5)
- {
- printf("full house\n");
- flag=1;
- }
- }
- }
- if(!flag&&same_suit)
- {
- printf("flush\n");
- flag=1;
- }
- else if(!flag&&in_seq)
- {
- printf("straight\n");
- flag=1;
- }
- else if(!flag)
- {
- for(i=0;i<5;i++)
- if(ranks[c[i].rank-1]==3)
- break;
- if(i<5)
- {
- printf("three of a kind\n");
- flag=1;
- }
- }
- if(!flag)
- {
- for(i=0;i<14;i++)
- if(ranks[i]==2)
- break;
- if(i<14)
- {
- for(j=0;j<14;j++)
- if(j!=i&&ranks[j]==2)
- break;
- if(j<14)
- {
- printf("two pairs\n");
- flag=1;
- }
- }
- }
- if(!flag)
- {
- for(i=0;i<5;i++)
- if(ranks[c[i].rank-1]==2)
- break;
- if(i<5)
- {
- printf("pair\n");
- flag=1;
- }
- }
- if(!flag)
- printf("high card\n");
- //cout<<"\nt="<<t;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement