A partir d'un fichier lit un coureur et les mets dans une liste
This commit is contained in:
parent
cfd9e3cb7b
commit
84d0d0a445
6 changed files with 91 additions and 16 deletions
|
@ -1,3 +1,5 @@
|
||||||
|
#ifndef HEADER_COUREUR
|
||||||
|
#define HEADER_COUREUR
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -15,3 +17,4 @@ typedef struct{ //definition de la structure
|
||||||
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
|
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 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)
|
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
|
|
@ -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
|
#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
|
struct element{ //definition de la structure qui element qui sera encaspule/chaine
|
||||||
|
@ -25,3 +27,4 @@ int tailleListe(liste l); //retourne le no
|
||||||
coureur * getCoureur(liste l,int nb); //retourne le courreur contenue dans l'element nb d'une liste (on considere un element 0)
|
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 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
|
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
|
|
@ -1,10 +1,16 @@
|
||||||
|
#ifndef HEADER_READFILE
|
||||||
|
#define HEADER_READFILE
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
#include "../header/liste.h"
|
||||||
|
|
||||||
int getNbLines(FILE * readFile);
|
int getNbLines(FILE * readFile);
|
||||||
int getFileSize(FILE * readFile);
|
int getFileSize(FILE * readFile);
|
||||||
void getStringFromFile(FILE * readFile,int nbLines,char * returnString,int * size);
|
void getStringFromFile(FILE * readFile,int nbLines,char * returnString,int * size);
|
||||||
char * getLine(char * string,int line);
|
char * getLine(char * string,int line);
|
||||||
void string2Coureur(char * string,int nbLines);
|
liste string2Liste(char * string,int nbLines);
|
||||||
|
void string2Coureur(char * string,char * nom, char * prenom, int * dossard);
|
||||||
|
void printHexString(char * string);
|
||||||
|
#endif
|
|
@ -1,6 +1,5 @@
|
||||||
#include "../header/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
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Creation d'un coureur en memoire avec recupération de son adrresse avec le parametrage de c'est different champs
|
* @brief Creation d'un coureur en memoire avec recupération de son adrresse avec le parametrage de c'est different champs
|
||||||
fonctionnement :
|
fonctionnement :
|
||||||
|
@ -31,8 +30,6 @@ coureur * creerCoureur(char nom[],char prenom[],int dossard, char equipe[],int t
|
||||||
return leCoureur;
|
return leCoureur;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Modifier le temps d'un coureur a partir de son adresse et d'une valeur de cumule
|
* @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;
|
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):
|
* @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
|
-initilisation de 3 variable tampon
|
||||||
|
|
|
@ -11,7 +11,8 @@ int main(void)
|
||||||
int stepsNb = atoi(getLine(fileString,1));
|
int stepsNb = atoi(getLine(fileString,1));
|
||||||
int teamsNb = atoi(getLine(fileString,2));
|
int teamsNb = atoi(getLine(fileString,2));
|
||||||
printf("Nombre d'etapes : %d\t Nombre d'equipes :%d\n",stepsNb,teamsNb);
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,7 +44,6 @@ liste initListe(void)
|
||||||
return l;
|
return l;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief ajout d'un element contenant un coureur dans liste
|
* @brief ajout d'un element contenant un coureur dans liste
|
||||||
* fonctionnement :
|
* fonctionnement :
|
||||||
|
@ -64,7 +64,6 @@ void ajoutListe(liste * listeActuel,coureur * leCoureur)
|
||||||
listeActuel->courant=elementActuel;
|
listeActuel->courant=elementActuel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief affiche tous les coureurs contenue dans les elements d'une liste
|
* @brief affiche tous les coureurs contenue dans les elements d'une liste
|
||||||
* fonctionnement :
|
* fonctionnement :
|
||||||
|
@ -126,7 +125,6 @@ coureur * coureurCourant(liste * l)
|
||||||
return l->courant->coureurActuel;
|
return l->courant->coureurActuel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief suprime un element(a partir de l'adresse d'un coureur) dans la liste sans briser le chainage
|
* @brief suprime un element(a partir de l'adresse d'un coureur) dans la liste sans briser le chainage
|
||||||
* fonctionnement :
|
* fonctionnement :
|
||||||
|
|
|
@ -64,24 +64,94 @@ char * getLine(char * string,int line)
|
||||||
return returnString;
|
return returnString;
|
||||||
}
|
}
|
||||||
|
|
||||||
void string2Coureur(char * string,int nbLines)
|
/**
|
||||||
|
* @brief
|
||||||
|
*
|
||||||
|
* @param string
|
||||||
|
* @param nbLines
|
||||||
|
*/
|
||||||
|
liste string2Liste(char * string,int nbLines)
|
||||||
{
|
{
|
||||||
int j=0;
|
int j=0;
|
||||||
|
char * team = (char *)(malloc(MAXLINE*sizeof(char)));
|
||||||
|
liste l = initListe();
|
||||||
for(int i=3;i<=nbLines;i++)
|
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)
|
switch(j)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
printf("Nom de l'equipe : %s\n",getLine(string,i));
|
strcpy(team,getLine(string,i));
|
||||||
break;
|
break;
|
||||||
default:
|
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++;
|
j++;
|
||||||
if(j>5)
|
if(j>5)
|
||||||
{
|
{
|
||||||
j=0;
|
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<MAXLINE;i++)
|
||||||
|
{
|
||||||
|
printf("0x%x, ",string[i]);
|
||||||
|
}
|
||||||
|
printf("\n\n");
|
||||||
}
|
}
|
Loading…
Add table
Reference in a new issue