Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- struct card
- {
- int num;
- char suit;
- };
- int flush(struct card *);
- int check(int *);
- int main()
- {
- int t,fstatus,i,j,done,pstatus;
- int arr[14]={0};
- char buff[2];
- struct card c[5],temp;
- scanf("%d",&t);
- for(;t>0;t--)
- {
- for(i=0;i<14;i++)
- arr[i]=0;
- for(i=0;i<5;i++)
- {
- scanf("%s",buff);
- switch(buff[0])
- {
- case 'T':
- c[i].num=10;
- arr[10]++;
- break;
- case 'J':
- c[i].num=11;
- arr[11]++;
- break;
- case 'Q':
- c[i].num=12;
- arr[12]++;
- break;
- case 'K':
- c[i].num=13;
- arr[13]++;
- break;
- case 'A':
- c[i].num=1;
- arr[1]++;
- break;
- default:
- c[i].num=buff[0]-'0';
- arr[buff[0]-'0']++;
- }
- c[i].suit=buff[1];
- }
- for(i=0,done=0;i<=3&&done==0;i++)
- {
- done=1;
- for(j=0;j<4-i;j++)
- {
- if(c[j].num>c[j+1].num)
- {
- temp=c[j];
- c[j]=c[j+1];
- c[j+1]=temp;
- done=0;
- }
- }
- }
- fstatus=flush(c);
- if(fstatus==3)
- {
- printf("royal flush\n");
- continue;
- }
- else if(fstatus==2)
- {
- printf("straight flush\n");
- continue;
- }
- else if((c[0].num==c[1].num && c[0].num==c[2].num && c[0].num==c[3].num) || (c[1].num==c[2].num && c[1].num==c[3].num && c[1].num==c[4].num))
- {
- printf("four of a kind\n");
- continue;
- }
- else if((c[0].num==c[1].num && c[2].num==c[3].num && c[2].num==c[4].num) || (c[0].num==c[1].num && c[0].num==c[2].num && c[3].num==c[4].num))
- {
- printf("full house\n");
- continue;
- }
- else if(fstatus==1)
- {
- printf("flush\n");
- continue;
- }
- else if((c[0].num+1==c[1].num || (c[0].num==1 && c[1].num==10)) && c[1].num+1==c[2].num && c[2].num+1==c[3].num && c[3].num+1==c[4].num )
- {
- printf("straight\n");
- continue;
- }
- pstatus=check(arr);
- if(pstatus==3)
- {
- printf("three of a kind\n");
- continue;
- }
- else if(pstatus==2)
- {
- printf("two pairs\n");
- continue;
- }
- else if(pstatus==1)
- {
- printf("pair\n");
- continue;
- }
- else
- printf("high card\n");
- }
- return 0;
- }
- int flush(struct card *c)
- {
- if(!((c[0].suit==c[1].suit)&&(c[0].suit==c[2].suit)&&(c[0].suit==c[3].suit)&&(c[0].suit==c[4].suit)))
- return 0;
- if(c[0].num==1 &&c [1].num==10 && c[2].num==11 &&c[3].num==12 && c[4].num==13)
- return 3;
- if(c[4].num-c[0].num==4)
- return 2;
- return 1;
- }
- int check(int *arr)
- {
- int array[5]={0},i;
- for(i=1;i<14;i++)
- array[arr[i]]++;
- if(array[3]==1)
- return 3;
- else if(array[2]==2)
- return 2;
- else if(array[2]==1)
- return 1;
- else
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement