Ajout du Makefile, réorganisation

This commit is contained in:
yoboujon 2022-11-25 14:42:43 +01:00
parent 8baef5005e
commit df36fba854
5 changed files with 89 additions and 22 deletions

23
Makefile Normal file
View file

@ -0,0 +1,23 @@
CC=gcc
CFLAGS=-Wall
SRC=src/
EXEC=main
CLEAN=clean
all: $(EXEC) exec
main: liste.o coureur.o
$(CC) $(CFLAGS) -o $@ $^
liste.o: src/liste.c
$(CC) $(CFLAGS) -c $^
coureur.o: src/coureur.c
$(CC) $(CFLAGS) -c $^
clean:
rm -rf *.o
rm $(EXEC)
exec:
./$(EXEC)

17
header/coureur.h Normal file
View file

@ -0,0 +1,17 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
typedef struct{ //definition de la structure coureur
char * nom;
char * prenom;
int dossard;
char * equipe;
int temps;
} coureur;
//Prototype
coureur * creerCoureur(char nom[],char prenom[],int dossard, char equipe[],int temps);//Creation d'un coureur en memoire avec recupération de son adrresse avec le parametrage de c'est different champs
void ajouterTemps(int leTemps,coureur * leCoureur); //Modifier le temps d'un coureur a partir de son adresse et d'une valeur de cumule
void afficherCoureur(coureur * leCoureur); //Afficher le temps d'un coureur stocker en seconde sous forme d'heures, de minutes et de secondes ( a partir de l'adresse de sa structure de définition)

27
header/liste.h Normal file
View file

@ -0,0 +1,27 @@
#include "coureur.h" //inclure le fichier "coureur.h" qui contien les libs et la structure coureur
struct element{ //definition de la structure qui element qui sera encaspule/chaine
coureur * coureurActuel; //"contient" l'adresse d'une structure coureur
struct element * suiv; //"contient" l'adresse d'une autre strucutre element(chainage)
};
typedef struct{ //definition de la structure liste qui "contient" l'encaspsulation
struct element * debut; //"contient" un element en debut *voir init dans liste.c
struct element * courant; //"contient"element actuel *voir init dans liste.c
struct element * fin; //"contient"element en fin de la liste (NULL) *voir init dans liste.c
} liste;
//Prototype de fonction
struct element * initElement(void); //initialise un element en memoir qui encapsule une strucure de coureurau champs vide
liste initListe(void); //initialise chaque element de la liste a partir de initElement
void ajoutListe(liste * listeActuel,coureur * leCoureur); //ajoute un element contenant un courreur dans le chainage d'une liste
void printlist(liste l); //afficher le coureur dans chaque element d'une liste
void allerDebut(liste * l); //mettre le poiteur courant sur l'element premier d'une liste
void allerFin(liste * l); //mettre le poiteur courant sur l'element de fin d'une liste
void avancer(liste * l); //mettre le poiteur courant sur l'element suivant de la liste dans la qu'elle qu'il pointe
coureur * coureurCourant(liste * l); //rien a foutre ici
void effacerCoureur(liste * listeActuel,coureur * coureurSuppr);//enleve un element d'une liste a partir de l'adresse d'un courreur, sans briser le chainage
int tailleListe(liste l); //retourne le nombre d'elements chaine d'une liste
coureur * getCoureur(liste l,int nb); //retourne le courreur contenue dans l'element nb d'une liste (on considere un element 0)
void invertCoureur(liste * l,int nb); //inverse l'element nb et nb+1 dans une liste (on considere un element 0)
void triListe(liste * l,int taille); //trie bulle des element d'une liste a partir du temps contenue dans la structure encapsule dans l'element

View file

@ -1,4 +1,4 @@
#include "coureur.h" //inclure le fichier "coureur.h" qui contien les libs, structure et prototypes #include "../header/coureur.h" //inclure le fichier "coureur.h" qui contien les libs, structure et prototypes
/** /**

View file

@ -1,13 +1,13 @@
#include "liste.h" //gcc -Wall liste.c coureur.c -o tp #include "../header/liste.h"
int main(void) int main(void)
{ {
coureur * c1 = creerCoureur("Paris","Simon",15,"TRAUFORE",50000); //creation coureur coureur * c1 = creerCoureur("Paris","Simon",15,"TRAUFORE",50000);
coureur * c2 = creerCoureur("Bougeont","Yoann",65,"MEILLEUR",99994); //creation coureur coureur * c2 = creerCoureur("Bougeont","Yoann",65,"MEILLEUR",99994);
coureur * c3 = creerCoureur("Barakai","Obama",120,"AMERICA",372); //creation coureur coureur * c3 = creerCoureur("Barakai","Obama",120,"AMERICA",372);
coureur * c4 = creerCoureur("Boujon","Yohan",56,"MAISYEUR",49999); //creation coureur coureur * c4 = creerCoureur("Boujon","Yohan",56,"MAISYEUR",49999);
coureur * c5 = creerCoureur("Runner","Tedi",1,"JUDOOOKA",120); //creation coureur coureur * c5 = creerCoureur("Runner","Tedi",1,"JUDOOOKA",120);
coureur * c6 = creerCoureur("Fatigue","Jean",69,"DODODODO",11554751); //creation coureur coureur * c6 = creerCoureur("Fatigue","Jean",69,"DODODODO",11554751);
printf(" -- COUREUR -- \n"); printf(" -- COUREUR -- \n");
afficherCoureur(c1); //Afficher les champs de la structure coureur c1 afficherCoureur(c1); //Afficher les champs de la structure coureur c1
ajouterTemps(50,c1); //Ajoutee 50 seconde dans le champ temp de c1 ajouterTemps(50,c1); //Ajoutee 50 seconde dans le champ temp de c1
@ -197,24 +197,24 @@ void invertCoureur(liste * l,int nb)
} }
} }
void triListe(liste * l,int taille) void triListe(liste * l,int taille)
{
bool tabOrdered = true;
for(int i=taille-1;i>1;i--) //pour i allant du nombre d'element dans la liste a 2 step -1
{ {
bool tabOrdered = true; for(int j=0;j<=i-1;j++) //pour j allant de 0 a i-1 step 1
for(int i=taille-1;i>1;i--) //pour i allant du nombre d'element dans la liste a 2 step -1
{ {
for(int j=0;j<=i-1;j++) //pour j allant de 0 a i-1 step 1 if(getCoureur(*l,j+1)->temps < getCoureur(*l,j)->temps)//si leCourreur taille -i a un temps < au coureur taille-i+1
{ {
if(getCoureur(*l,j+1)->temps < getCoureur(*l,j)->temps)//si leCourreur taille -i a un temps < au coureur taille-i+1 invertCoureur(l,j); //inverser les courreurs
{ tabOrdered = false;
invertCoureur(l,j); //inverser les courreurs
tabOrdered = false;
}
//printlist(*l);
}
if(tabOrdered)
{
return;
} }
//printlist(*l);
}
if(tabOrdered)
{
return;
} }
} }
}