diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..264f465 --- /dev/null +++ b/Makefile @@ -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) \ No newline at end of file diff --git a/header/coureur.h b/header/coureur.h new file mode 100644 index 0000000..9a22c85 --- /dev/null +++ b/header/coureur.h @@ -0,0 +1,17 @@ +#include +#include +#include +#include + +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) \ No newline at end of file diff --git a/header/liste.h b/header/liste.h new file mode 100644 index 0000000..a59f88f --- /dev/null +++ b/header/liste.h @@ -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 \ No newline at end of file diff --git a/coureur.c b/src/coureur.c similarity index 95% rename from coureur.c rename to src/coureur.c index 0193377..65eb1ec 100644 --- a/coureur.c +++ b/src/coureur.c @@ -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 /** diff --git a/liste.c b/src/liste.c similarity index 91% rename from liste.c rename to src/liste.c index a8b3c76..b8234eb 100644 --- a/liste.c +++ b/src/liste.c @@ -1,13 +1,13 @@ -#include "liste.h" //gcc -Wall liste.c coureur.c -o tp +#include "../header/liste.h" int main(void) { - coureur * c1 = creerCoureur("Paris","Simon",15,"TRAUFORE",50000); //creation coureur - coureur * c2 = creerCoureur("Bougeont","Yoann",65,"MEILLEUR",99994); //creation coureur - coureur * c3 = creerCoureur("Barakai","Obama",120,"AMERICA",372); //creation coureur - coureur * c4 = creerCoureur("Boujon","Yohan",56,"MAISYEUR",49999); //creation coureur - coureur * c5 = creerCoureur("Runner","Tedi",1,"JUDOOOKA",120); //creation coureur - coureur * c6 = creerCoureur("Fatigue","Jean",69,"DODODODO",11554751); //creation coureur + coureur * c1 = creerCoureur("Paris","Simon",15,"TRAUFORE",50000); + coureur * c2 = creerCoureur("Bougeont","Yoann",65,"MEILLEUR",99994); + coureur * c3 = creerCoureur("Barakai","Obama",120,"AMERICA",372); + coureur * c4 = creerCoureur("Boujon","Yohan",56,"MAISYEUR",49999); + coureur * c5 = creerCoureur("Runner","Tedi",1,"JUDOOOKA",120); + coureur * c6 = creerCoureur("Fatigue","Jean",69,"DODODODO",11554751); printf(" -- COUREUR -- \n"); afficherCoureur(c1); //Afficher les champs de la structure coureur 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 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 { - 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; - } - //printlist(*l); - } - if(tabOrdered) - { - return; + invertCoureur(l,j); //inverser les courreurs + tabOrdered = false; } + //printlist(*l); + } + if(tabOrdered) + { + return; } } + }