diff --git a/header/coureur.h b/header/coureur.h index 9a22c85..d323542 100644 --- a/header/coureur.h +++ b/header/coureur.h @@ -1,3 +1,5 @@ +#ifndef HEADER_COUREUR +#define HEADER_COUREUR #include #include #include @@ -14,4 +16,5 @@ typedef struct{ //definition de la structure //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 +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) +#endif \ No newline at end of file diff --git a/header/liste.h b/header/liste.h index a59f88f..1db77da 100644 --- a/header/liste.h +++ b/header/liste.h @@ -1,3 +1,5 @@ +#ifndef HEADER_LISTE +#define HEADER_LISTE #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 @@ -24,4 +26,5 @@ void effacerCoureur(liste * listeActuel,coureur * coureurSuppr);//enleve un elem 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 +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 +#endif \ No newline at end of file diff --git a/header/readfile.h b/header/readfile.h index 8e19cd8..552f1fe 100644 --- a/header/readfile.h +++ b/header/readfile.h @@ -1,10 +1,16 @@ +#ifndef HEADER_READFILE +#define HEADER_READFILE #include #include #include #include +#include "../header/liste.h" int getNbLines(FILE * readFile); int getFileSize(FILE * readFile); void getStringFromFile(FILE * readFile,int nbLines,char * returnString,int * size); char * getLine(char * string,int line); -void string2Coureur(char * string,int nbLines); \ No newline at end of file +liste string2Liste(char * string,int nbLines); +void string2Coureur(char * string,char * nom, char * prenom, int * dossard); +void printHexString(char * string); +#endif \ No newline at end of file diff --git a/src/coureur.c b/src/coureur.c index 65eb1ec..4d4164b 100644 --- a/src/coureur.c +++ b/src/coureur.c @@ -1,6 +1,5 @@ #include "../header/coureur.h" //inclure le fichier "coureur.h" qui contien les libs, structure et prototypes - /** * @brief Creation d'un coureur en memoire avec recupération de son adrresse avec le parametrage de c'est different champs fonctionnement : @@ -31,8 +30,6 @@ coureur * creerCoureur(char nom[],char prenom[],int dossard, char equipe[],int t return leCoureur; } - - /** * @brief Modifier le temps d'un coureur a partir de son adresse et d'une valeur de cumule * @@ -44,8 +41,6 @@ void ajouterTemps(int leTemps,coureur * leCoureur) leCoureur->temps+=leTemps; } - - /** * @brief 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): -initilisation de 3 variable tampon diff --git a/src/liste.c b/src/liste.c index a06399a..191e3d7 100644 --- a/src/liste.c +++ b/src/liste.c @@ -11,7 +11,8 @@ int main(void) int stepsNb = atoi(getLine(fileString,1)); int teamsNb = atoi(getLine(fileString,2)); printf("Nombre d'etapes : %d\t Nombre d'equipes :%d\n",stepsNb,teamsNb); - string2Coureur(fileString,fileLines); + liste l = string2Liste(fileString,fileLines); + printlist(l); return 0; } @@ -43,7 +44,6 @@ liste initListe(void) return l; } - /** * @brief ajout d'un element contenant un coureur dans liste * fonctionnement : @@ -64,7 +64,6 @@ void ajoutListe(liste * listeActuel,coureur * leCoureur) listeActuel->courant=elementActuel; } - /** * @brief affiche tous les coureurs contenue dans les elements d'une liste * fonctionnement : @@ -126,7 +125,6 @@ coureur * coureurCourant(liste * l) return l->courant->coureurActuel; } - /** * @brief suprime un element(a partir de l'adresse d'un coureur) dans la liste sans briser le chainage * fonctionnement : diff --git a/src/readfile.c b/src/readfile.c index 49ac104..d6b4ad5 100644 --- a/src/readfile.c +++ b/src/readfile.c @@ -64,24 +64,94 @@ char * getLine(char * string,int line) return returnString; } -void string2Coureur(char * string,int nbLines) +/** + * @brief + * + * @param string + * @param nbLines + */ +liste string2Liste(char * string,int nbLines) { int j=0; + char * team = (char *)(malloc(MAXLINE*sizeof(char))); + liste l = initListe(); for(int i=3;i<=nbLines;i++) { + char * nom = (char *)(malloc(MAXLINE*sizeof(char))); + char * prenom = (char *)(malloc(MAXLINE*sizeof(char))); + int dossard=0; switch(j) { case 0: - printf("Nom de l'equipe : %s\n",getLine(string,i)); + strcpy(team,getLine(string,i)); break; default: - printf("Coureur : %s\n",getLine(string,i)); + string2Coureur(getLine(string,i),nom,prenom,&dossard); + coureur * coureurTemp = creerCoureur(nom,prenom,dossard,team,0); + ajoutListe(&l,coureurTemp); } j++; if(j>5) { j=0; - printf("\n"); } + free(nom); + free(prenom); } + return l; +} + +/** + * @brief A partir d'une ligne récupère les informations sur le coureur, + * Notamment son numéro de dossard, son nom et son prénom + * + * @param string char * ligne textuel + * @param nom char * renvoi le nom du coureur, doit être vide + * @param prenom char * renvoi le nom du coureur, doit être vide + * @param dossard int * renvoi le numéro du dossard + */ +void string2Coureur(char * string,char * nom, char * prenom, int * dossard) +{ + int i=0,j=0,k=0; + char * temp = (char *)(malloc(MAXLINE*sizeof(char))); + while(string[j]!='\0'){ + k=0; + while(string[j] != ',' && string[j]!='\0'){ + temp[k] = string[j]; + j++; + k++; + } + temp[k]='\0'; + j++; + switch(i) + { + case 0: + *dossard = atoi(temp); + break; + case 1: + strcpy(nom,temp); + break; + case 2: + strcpy(prenom,temp); + break; + default: + } + i++; + } + free(temp); +} + +/** + * @brief Debug uniquement, permet d'observer les valeurs de chaque caractère. + * la taille n'est pas demandée pour observer au delà de l'espace mémoire donné + * + * @param string un tableau de caractère + */ +void printHexString(char * string) +{ + for(int i=0;i