#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <stddef.h>
#include <time.h>
typedef struct Bj{
char *name;
int value;
}Bj;
#define C "Corazones"
#define P "picas"
#define D "diamantes"
#define T "treboles"
#define J "J de "
#define Q "Q de "
#define K "k de "
#define B(n) {(n),1}, {(n),2},{(n),3},{(n),4},{(n),5},{(n),6},{(n),7},{(n),8}, \
{(n),9}, {(n),10}
#define F(n) {(J n),10},{(Q n),10},{(K n),10}
const struct Bj BRJ[][13] ={
{B(C), F(C)},
{B(P), F(P)},
{B(T), F(T)},
{B(D), F(D)},
};
#define SIZE 52
int randcarts[SIZE];
void MakeIndex(void)
{
int i;
for(i = 0;i < SIZE;++i)
randcarts[i] = i;
}
void shufflescard(void)
{
int i, n, tmp;
srand(time(NULL));
MakeIndex();
for(i = 0;i < SIZE;++i)
{
n = rand() % SIZE;
tmp = randcarts[n];
randcarts[n] = randcarts[i];
randcarts[i] = tmp;
}
}
void ShowCarts(void)
{
int po = 0;
int pa = 0;
int c = 0;
int i;
MakeIndex();
for(i = 0; i < SIZE;++i){
c = randcarts[i];
pa =c/13;
po -= pa * 13;
po += c;
printf("%d %s \n" ,BRJ[pa][po].value ,BRJ[pa][po].name);
po = pa = 0;
}
}
int main(void)
{
int po= 0;
int pa = 0;
int c = 0;
int i;
ShowCarts();
printf("\n----------------\n\n" );
shufflescard();
for(i = 0; i < SIZE;++i){
c = randcarts[i];
pa =c/13;
po -= pa * 13;
po += c;
printf("%d %s\n" ,BRJ[pa][po].value ,BRJ[pa][po].name);
po = pa = 0;
}
return 0;
}