Hi all,

Try to compile this program and see what happens.
I use Visual C++ 6.

The problem is that at the very end, where is prints out 13 different cards for each player, it arrives to the point where it says "Player 4:" and seems to ignore the loop that displays the cards.

_____________________

#include <iostream.h>
#include <stdlib.h> // for randomize(), rand
#include <time.h> // for randomize()
#include <conio.h> // for getche()

enum Suit { clubs, diamonds, hearts, spades };

const int jack = 11; // from 2 to 10 are
const int queen = 12; // integers without names
const int king = 13;
const int ace = 14;

class card
{
private:
int number; // 2 to 10, jack, queen, king, ace
Suit suit; // clubs, diamonds, hearts, spades
public:
void init(int n, Suit s) // initialize card
{ suit = s; number = n; }
void display() // display the card
{
if( number >= 2 && number <= 10 )
cout << number;
else
switch(number)
{
case jack: cout << "J"; break;
case queen: cout << "Q"; break;
case king: cout << "K"; break;
case ace: cout << "A"; break;
}
switch(suit)
{
case clubs: cout << 'c'; break;
case diamonds: cout << 'd'; break;
case hearts: cout << 'h'; break;
case spades: cout << 's'; break;
}
} // end display()
}; // end class card

void main()
{
card deck[52]; // deck of cards
int j = 0; // counts thru deck
int num; // card number

cout << endl;
for(num=2; num<=14; num++) // for each number
{
deck[j].init(num, clubs); // set club
deck[j+13].init(num, diamonds); // set diamond
deck[j+26].init(num, hearts); // set heart
deck[j++ +39].init(num, spades); // set spade
}

cout << "\nOrdered deck:\n";
for(j=0; j<52; j++) // display ordered deck
{
deck[j].display();
cout << " ";
if( !( (j+1) % 13) ) // newline every 13 cards
cout << endl;
}

srand(time(0)); // seed random number generator
for(j=0; j<52; j++) // for each card in the deck,
{
int k = 1 + rand() % 52; // pick another card at random
card temp = deck[j]; // and swap them
deck[j] = deck[k];
deck[k] = temp;
}

cout << "\nShuffled deck:\n";
for(j=0; j<52; j++) // display shuffled deck
{
deck[j].display();
cout << " ";
if( !( (j+1) % 13) ) // newline every 13 cards
cout << endl;
}
card player1[13];
card player2[13];
card player3[13];
card player4[13];
for (j=0; j<13; j++)
{
player1[j] = deck[j];
player2[j] = deck[j+13];
player3[j] = deck[j+26];
player4[j] = deck[j++ +39];
}
cout << "\n\nPlayer 1:"<<endl;
for (j=0; j<13; j++)
{
player1[j].display();
cout << " ";
}
cout << "\n\nPlayer 2:"<<endl;
for (j=0; j<13; j++)
{
player2[j].display();
cout << " ";
}
cout << "\n\nPlayer 2:"<<endl;
for (j=0; j<13; j++)
{
player3[j].display();
cout << " ";
}
cout << "\n\nPlayer 4:"<<endl;
for (j=0; j<13; j++)
{
player4[j].display();
cout << " ";
}
getch(); // wait for keypress
} // end main

Also, in the following code:

deck[j].init(num, clubs); // set club
deck[j+13].init(num, diamonds); // set diamond
deck[j+26].init(num, hearts); // set heart
deck[j++ +39].init(num, spades); // set spade

does anybody know why there is need to do j++ +39 and not just +39?


What may I do to solve the problem?
Thanks,
Marc