Following this text book, i need to take this card dealing program and turn it into dealing 5 cards, and identifying pairs(and various other hands). The 5 cards was easy, now im just experimenting on how to identify pairs when i came into the error: missing ; before const. The /* comments are from the book. my comments for your reference are #

/* Fig. 7.24: fig07_24.c
   Card shuffling dealing program */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

/* prototypes */
void shuffle( int wDeck[][ 13 ] );
void deal( const int wDeck[][ 13 ], const char *wFace[], 
           const char *wSuit[] );

int main()
{
   /* initialize suit array */
   const char *suit[ 4 ] = { "Hearts", "Diamonds", "Clubs", "Spades" };
   
   /* initialize face array */
   const char *face[ 13 ] = 
      { "Ace", "Deuce", "Three", "Four", 
        "Five", "Six", "Seven", "Eight",
        "Nine", "Ten", "Jack", "Queen", "King" };

   /* initialize deck array */
   int deck[ 4 ][ 13 ] = { 0 };

   srand( time( 0 ) ); /* seed random-number generator */

   shuffle( deck );
   deal( deck, face, suit );

   return 0; /* indicates successful termination */

} /* end main */

/* shuffle cards in deck */
void shuffle( int wDeck[][ 13 ] )
{
   int row;    /* row number */
   int column; /* column number */
   int card;   /* counter */

   /* for each of the 52 cards, choose slot of deck randomly */
   for ( card = 1; card <= 52; card++ ) {

      /* choose new random location until unoccupied slot found */
      do {
         row = rand() % 4;
         column = rand() % 13;
      } while( wDeck[ row ][ column ] != 0 ); /* end do...while */

      /* place card number in chosen slot of deck */
      wDeck[ row ][ column ] = card;
   } /* end for */

} /* end function shuffle */

/* deal cards in deck */
void deal( const int wDeck[][ 13 ], const char *wFace[],
           const char *wSuit[] )
{
   int card;   /* card counter */
   int row;    /* row counter */
   int column; /* column counter */
   int crd[5]; //added this array to store the values of the hand

   /* deal each of the 52 cards */
   #The 5 here was 52, deals just 5 cards now.
   for ( card = 1; card <= 5; card++ ) {

      /* loop through rows of wDeck */
      for ( row = 0; row <= 3; row++ ) {

         /* loop through columns of wDeck for current row */
         for ( column = 0; column <= 12; column++ ) {

            /* if slot contains current card, display card */
            if ( wDeck[ row ][ column ] == card ) {
               printf( "%5s of %-8s%c", wFace[ column ], wSuit[ row ],
                  card % 2 == 0 ? '\n' : '\t' );
               const char *crd[card] = { wFace[column]}; 
#And here's where it pinpoints the error. I'm basically hoping for crd[0] to equal the first card. crd[1] to equal the 2nd. etc.
            } /* end if */

         } /* end for */

      } /* end for */

   } /* end for */

} /* end function deal */

Recommended Answers

All 3 Replies

Why is line 80 inside that if block? What good does it do? Line 80 declares an array of pointers which immediately goes out of scope and is destroyed.

Because I started learning C just last weekend and I wouldnt spot something like that. Was basically wantig it to assign the card it displays to an array, along with the other 4 so I could then call the array for each card.

Found the issue. Visual studio doesnt like variables to be declared halfway through a function. it needs to be at the top. The code doesnt work, but the error is gone :)

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.