#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void shuffle( int wDeck[][ 13 ] );
void deal( const int wDeck[][ 13 ], const char *wFace[], const char *wSuit[] );
int main( void )
{
/* Inizializza il vettore dei semi */
const char *suit[ 4 ] = { "Hearts", "Diamonds", "Clubs", "Spades" };
/* Inizializza il vettore delle facce */
const char *face[ 13 ] = { "Ace", "Deuce", "Three", "Four",
"Five", "Six", "Sever", "Eight",
"Nine", "Ten", "Jack", "Queen", "King" };
/* Inizializza il vettore del mazzo di carte */
int deck[ 4 ][ 13 ] = { 0 };
/* Specifica il seme per il generatore di numeri casuali */
srand( time(NULL) );
shuffle( deck );
deal( deck, face, suit );
return 0;
} /* Fine della funzione main */
/* Mescola le carte nel mazzo */
void shuffle( int wDeck[][ 13 ] )
{
int row; /* Numero di riga */
int column; /* Numero di colonna */
int card; /* Contatore */
/* Per ognuna delle 52 carte, sceglie a caso una casella del mazzo */
for( card = 1; card <= 52; card++ ) {
do {
row = rand() % 4;
column = rand() % 13;
} while ( wDeck[ row ][ column ] != 0 ); /* Controlla se la casella è libera */
/* Memorizza il numero della carta nella casella del mazzo scelta */
wDeck[ row ][ column ] = card;
}
} /* Fine della funzione shuffle */
void deal( const int wDeck[][ 13 ], const char *wFace[], const char *wSuit[] )
{
int card; /* Contatore delle carte */
int row; /* Contatore delle righe */
int column; /* Contatore delle colonne */
/* Distribuisce ognuna delle 52 carte */
for( card = 1; card <= 52; card++ ) {
/* Itera scorrendo le righe di wDeck */
for( row = 0; row <= 3; row++ ) {
/* Itera scorrendo le colonne di wDeck*/
for( column = 0; column <= 12; column++ ) {
/* Se la casella contiene la carta corrente, la visualizza */
if ( wDeck[ row ][ column ] == card ) {
printf( "%s of %s\n", wFace[ column ], wSuit[ row ]);
} /* Fine del comando if */
} /* Fine del comando for */
} /* Fine del comando for */
} /* Fine del comando for */
} /* Fine della funzione deal */