1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
| #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
typedef struct element
{
int couleur;
int valeur;
struct element *suivant;
} carte;
typedef carte* pcarte;
pcarte init()
{
pcarte p;
p=(carte*)malloc(sizeof(carte));
printf("**INSERTION**\n\n");
printf("les couleurs: 1 -> 4\n");
printf("les valeurs: 1 -> 13\n\n");
do {
printf("Donner la couleur: ");
scanf("%d",&p->couleur); }while(p->couleur<1 || p->couleur>4);
do {
printf("Donner la valeur: ");
scanf("%d",&p->valeur); }while(p->valeur<1 || p->valeur>13);
p->suivant=NULL;
return p;
}
void inserer(pcarte p)
{
char c;
pcarte tmp,nouv;
tmp=p;
while(printf("\nAjouter un element? (O/N): "),fflush(stdin),scanf("%c",&c),c=='o')
{
nouv=(carte*)malloc(sizeof(carte));
do {
printf("Donner la couleur: ");
scanf("%d",&nouv->couleur); }while(nouv->couleur<1 || nouv->couleur>4);
do {
printf("Donner la valeur: ");
scanf("%d",&nouv->valeur); }while(nouv->valeur<1 || nouv->valeur>13);
tmp->suivant=nouv;
nouv->suivant=NULL;
tmp=tmp->suivant;
}
}
void inserer_fin(pcarte p, int c, int v)
{
pcarte tmp,nouv;
tmp=p;
nouv=(carte*)malloc(sizeof(carte));
nouv->couleur=c;
nouv->valeur=v;
nouv->suivant=NULL;
while(tmp->suivant!=NULL)
{
tmp=tmp->suivant;
}
tmp->suivant=nouv;
}
void lister_carte(pcarte p)
{
pcarte tmp;
tmp=p;
printf("\n\n**LA LISTE**\n");
while(tmp)
{
printf("%d\t%d\n",tmp->couleur,tmp->valeur);
tmp=tmp->suivant;
}
}
pcarte extraire(pcarte p, int i)
{
int count;
pcarte tmp=p;
for (count=1;count<i;count++)
{
tmp = tmp->suivant;
}
return tmp;
}
pcarte battre_paquet(pcarte p)
{
pcarte pb=NULL,tmp;
int i;
srand(time(NULL));
for(i=1;i<=52;i++)
{
tmp=extraire(p,rand()%53);
inserer_fin(&pb,tmp->couleur,tmp->valeur);
free(tmp);
}
return pb;
}
int main()
{
pcarte p,temp,test;
p=init();
lister_carte(p);
inserer(p);
lister_carte(p);
inserer_fin(p,1,1);
lister_carte(p);
temp=extraire(p,3);
printf("\nla couleur est: %d",temp->couleur);
printf("\nla valeur est: %d",temp->valeur);
test=battre_paquet(p);
lister_carte(test);
return 0;
} |
Partager