ajout du tp15 d'algo

master
antoine.perederii 2 years ago
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…
Cancel
Save