/*
* cards_1.c
* This program picks up five cards and prints
them.
*/
#include <stdio.h>
#include <stdlib.h>
/* The value of a card: A, 2-10, J, Q and K: */
enum Value
{
ACE = 1,
TWO,
THREE,
FOUR,
FIVE,
SIX,
SEVEN,
EIGHT,
NINE,
TEN,
JACK,
QUEEN,
KING
};
/* The possible suits. */
enum Suit
{
HEARTS,
SPADES,
DIAMONDS,
CLUBS,
N_SUITS
};
#define N_CARDS 5
int main ()
{
enum
Value vals[N_CARDS];
enum
Suit suits[N_CARDS];
const
char *suit_names[N_SUITS] = {"hearts", "spades",
"diamonds", "clubs"};
int is_unique;
int i, j;
for
(i = 0; i < N_CARDS; i++)
{
/* Pick up the
current card. */
do
{
vals[i] = (enum Value)(1
+ rand() % 13);
suits[i] = (enum Suit)(rand() % N_SUITS);
/* Make sure
the card is unique. */
is_unique = 1;
for (j = 0; j <
i; j++)
{
if (vals[i] == vals[j] && suits[i] ==
suits[j])
{
/* We already have this card: */
is_unique = 0;
break;
}
}
} while (!
is_unique);
/* Print the
card. */
switch
(vals[i])
{
case
ACE:
printf ("A of %s", suit_names[suits[i]]);
break;
case
JACK:
printf ("J of %s", suit_names[suits[i]]);
break;
case
QUEEN:
printf ("Q of %s", suit_names[suits[i]]);
break;
case
KING:
printf ("K of %s", suit_names[suits[i]]);
break;
default:
printf ("%d of %s", vals[i],
suit_names[suits[i]]);
}
printf ("\n");
}
return
(0);
}