# help modifying code

Discussion in 'C' started by JamC, Jul 29, 2007.

1. ### JamCNew Member

Joined:
Jun 23, 2007
Messages:
8
Likes Received:
1
Trophy Points:
0
I have a program evaluating a straight hand in poker: Here is my code:
Code:
```int numInRank[14];

cin.get(rankCh);
switch (toupper(rankCh))
{
case '-1':            exit(0);
case '?':           rank = 0; break;
case 'A':          rank = 1; break;
case '2':           rank = 2; break;
case '3':           rank = 3; break;
case '4':           rank = 4; break;
case '5':           rank = 5; break;
case '6':           rank = 6; break;
case '7':           rank = 7; break;
case '8':           rank = 8; break;
case '9':           rank = 9; break;
case 'T':           rank = 10; break;
case 'J':           rank = 11; break;
case 'Q':          rank = 12; break;
case 'K':          rank = 13; break;

bool isStraight(int numInRank[]){
int count = 0;
for(int i = 1; i  < 14; i++){
if(numInRank[i] != 0){
count++;
if(i == 13 && numInRank[1] != 0) count++;
}else{
count = 0;
}
if(count == 5) return true;
}
return false;
}```
I would like to modify the above code to handle A high and A low straights- I sized my array to 14 instead of 13 to hold both...
Any suggestions...

Last edited by a moderator: Jul 29, 2007
2. ### DaWeiNew Member

Joined:
Dec 6, 2006
Messages:
835
Likes Received:
5
Trophy Points:
0
Occupation:
Semi-retired EE
Location:
Texan now in Central NY
Home Page:
The way I do it, for a 5-card hand, is to ensure that there are no duplicates, find the minimum and maximum values, and see if there is a difference of 4 between max and min. If it doesn't produce a straight, and min is 1, I reassign the A to its high value, set it as max, find the new min, and do it again.