#include<iostream>
#include<ctime>

void shuffle( int deck[][13] ) 
{
   int row, column;

   for (int card = 1; card <= 52; card++) {
      do {
         row = rand() % 4;
         column = rand() % 13;
      }
      while ( deck[row][column] !=0);

      deck[row][column] = card;
   }
}


void deal( int deck[][13], const char* face[], const char* suit[] )
{
   for (int card = 1; card <= 52; card++) 
      for (int row = 0; row < 4; row++) 
         for (int column = 0; column < 13; column++) 
            if(deck[row][column] == card) 
               std::cout << face[column] << " of " << suit[row] 
                         << (card %2 == 0 ? '\n' : '\t');
}


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

   srand( time(0) );
   shuffle(deck);
   deal(deck, face, suit); 

   return 0;
}
