parent
b40a05fb7e
commit
b89507d17b
Binary file not shown.
@ -0,0 +1,10 @@
|
||||
#include "tp15.h"
|
||||
|
||||
int main(void)
|
||||
{
|
||||
printf("-------------- Jeu 1 --------------\n");
|
||||
jeu();
|
||||
printf("\n-------------- Jeu 2 --------------\n");
|
||||
jeu2();
|
||||
return 0;
|
||||
}
|
@ -0,0 +1,235 @@
|
||||
#include "tp15.h"
|
||||
|
||||
/* Exercice 1 Partie I */
|
||||
|
||||
File filenouv(void)
|
||||
{
|
||||
File f;
|
||||
f.t = NULL;
|
||||
f.q = NULL;
|
||||
return f;
|
||||
}
|
||||
|
||||
File adjq(File f, int x)
|
||||
{
|
||||
Maillon *m;
|
||||
m = (Maillon *)malloc(sizeof(Maillon));
|
||||
if(m == NULL)
|
||||
{
|
||||
printf("Erreur d'allocation memoire");
|
||||
exit(1);
|
||||
}
|
||||
m->v = x;
|
||||
m->suiv = NULL;
|
||||
if(vide(f))
|
||||
{
|
||||
f.t = m;
|
||||
f.q = m;
|
||||
return f;
|
||||
}
|
||||
f.q->suiv = m;
|
||||
f.q = m;
|
||||
return f;
|
||||
}
|
||||
|
||||
File supt(File f)
|
||||
{
|
||||
Maillon *aux;
|
||||
if(vide(f))
|
||||
{
|
||||
printf("opération impossible");
|
||||
exit(1);
|
||||
}
|
||||
if(f.t == f.q)
|
||||
{
|
||||
free(f.t);
|
||||
return filenouv();
|
||||
}
|
||||
aux = f.t;
|
||||
f.t = f.t->suiv;
|
||||
free(aux);
|
||||
return f;
|
||||
}
|
||||
|
||||
bool vide(File f)
|
||||
{
|
||||
return f.t == NULL && f.q == NULL;
|
||||
}
|
||||
|
||||
int tete(File f)
|
||||
{
|
||||
if(vide(f))
|
||||
{
|
||||
printf("opération impossible");
|
||||
exit(1);
|
||||
}
|
||||
return f.t->v;
|
||||
}
|
||||
|
||||
int longueur(File f)
|
||||
{
|
||||
int cpt = 0;
|
||||
while(f.t != NULL)
|
||||
{
|
||||
cpt++;
|
||||
f.t = f.t->suiv;
|
||||
}
|
||||
return cpt;
|
||||
}
|
||||
|
||||
void afficher(File f)
|
||||
{
|
||||
while(f.t != NULL)
|
||||
{
|
||||
printf("%d ", f.t->v);
|
||||
f.t = f.t->suiv;
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
/* Exercice 1 Partie II */
|
||||
|
||||
|
||||
|
||||
Fil filenouv2(void)
|
||||
{
|
||||
Fil f;
|
||||
f = NULL;
|
||||
return f;
|
||||
}
|
||||
|
||||
Fil adjq2(Fil f, int x)
|
||||
{
|
||||
Maillo *m;
|
||||
m = (Maillo *)malloc(sizeof(Maillo));
|
||||
if(m == NULL)
|
||||
{
|
||||
printf("opération interdite");
|
||||
exit(1);
|
||||
}
|
||||
m->v = x;
|
||||
if(vide2(f))
|
||||
{
|
||||
m->suiv = m;
|
||||
return m;
|
||||
}
|
||||
m->suiv = f->suiv;
|
||||
f->suiv = m;
|
||||
return m;
|
||||
}
|
||||
|
||||
Fil supt2(Fil f)
|
||||
{
|
||||
Maillo *aux;
|
||||
if(vide2(f))
|
||||
{
|
||||
printf("opération interdite");
|
||||
exit(1);
|
||||
}
|
||||
if(f->suiv == f)
|
||||
{
|
||||
free(f);
|
||||
return filenouv2();
|
||||
}
|
||||
aux = f->suiv;
|
||||
f->suiv = aux->suiv;
|
||||
free(aux);
|
||||
return f;
|
||||
}
|
||||
|
||||
bool vide2(Fil f)
|
||||
{
|
||||
return f == NULL;
|
||||
}
|
||||
|
||||
int tete2(Fil f)
|
||||
{
|
||||
if(vide2(f))
|
||||
{
|
||||
printf("opération interdite");
|
||||
exit(1);
|
||||
}
|
||||
return f->suiv->v;
|
||||
}
|
||||
|
||||
int longueur2(Fil f)
|
||||
{
|
||||
int cpt = 1;
|
||||
Maillo *aux;
|
||||
if(vide2(f))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
aux = f->suiv;
|
||||
while(aux != f)
|
||||
{
|
||||
cpt++;
|
||||
aux = aux->suiv;
|
||||
}
|
||||
return cpt;
|
||||
}
|
||||
|
||||
void afficher2(Fil f)
|
||||
{
|
||||
Maillo *m=f;
|
||||
if(vide2(f))
|
||||
{
|
||||
printf("opération interdite");
|
||||
return;
|
||||
}
|
||||
printf("%d", f->suiv->v);
|
||||
while(f->suiv != m)
|
||||
{
|
||||
f = f->suiv;
|
||||
printf(" %d", f->suiv->v);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
|
||||
/* Exercice 2 Partie I */
|
||||
|
||||
void jeu(void)
|
||||
{
|
||||
File f = filenouv();
|
||||
int i, t;
|
||||
for(i = 1; i <= 40; i++)
|
||||
{
|
||||
f = adjq(f, i);
|
||||
}
|
||||
while(longueur(f) > 1)
|
||||
{
|
||||
for(i = 1; i <= 6; i++)
|
||||
{
|
||||
t = tete(f);
|
||||
f = supt(f);
|
||||
f = adjq(f, t);
|
||||
}
|
||||
f = supt(f);
|
||||
}
|
||||
printf("Le gagnant est le joueur %d\n", tete(f));
|
||||
}
|
||||
|
||||
/* Exercice 2 Partie II */
|
||||
|
||||
void jeu2(void)
|
||||
{
|
||||
Fil f = filenouv2();
|
||||
int i, t;
|
||||
for(i = 1; i <= 40; i++)
|
||||
{
|
||||
f = adjq2(f, i);
|
||||
|
||||
}
|
||||
while(longueur2(f) > 1)
|
||||
{
|
||||
for(i = 1; i <= 6; i++)
|
||||
{
|
||||
t = tete2(f);
|
||||
f = supt2(f);
|
||||
f = adjq2(f, t);
|
||||
}
|
||||
f = supt2(f);
|
||||
}
|
||||
printf("Le gagnant est le joueur %d\n", tete2(f));
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
typedef struct maillon {
|
||||
int v;
|
||||
struct maillon *suiv;
|
||||
} Maillon;
|
||||
|
||||
typedef struct {
|
||||
Maillon *t;
|
||||
Maillon *q;
|
||||
} File;
|
||||
|
||||
typedef struct maillo {
|
||||
int v;
|
||||
struct maillo *suiv;
|
||||
} Maillo, *Fil;
|
||||
|
||||
File filenouv(void);
|
||||
File adjq(File f, int x);
|
||||
File supt(File f);
|
||||
int tete(File f);
|
||||
bool vide(File f);
|
||||
int longueur(File f);
|
||||
void afficher(File f);
|
||||
Fil filenouv2(void);
|
||||
Fil adjq2(Fil f, int x);
|
||||
Fil supt2(Fil f);
|
||||
bool vide2(Fil f);
|
||||
int tete2(Fil f);
|
||||
int longueur2(Fil f);
|
||||
void afficher2(Fil f);
|
||||
void jeu(void);
|
||||
void jeu2(void);
|
Loading…
Reference in new issue