I have a program evaluating a straight hand in poker: Here is my 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...

#include <iostream>
#include <cctype>
#include <cstring>
#include <algorithm>
using namespace std ;
 
const char* const ranks = "A23456789TJQK ATJQK" ; 
struct on_rank 
{ 
 bool operator() ( char a, char b ) const
 { return strchr(ranks,a) < strchr(ranks,b) ; }
};
 
int main()
{
 enum { NCARDS = 5 };
 char cards[NCARDS+1] = {0} ;
 for( int i=0 ; i<NCARDS ; ++i ) 
  { cin >> cards[i] ; cards[i] = toupper(cards[i]) ; }
 sort( cards, cards+NCARDS, on_rank() ) ;
 cout << "straight? " << boolalpha 
        << ( strstr( ranks, cards ) != 0 ) << '\n' ;
}
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.