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 <stdlib.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
|
||||
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)
|
||||
#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
|
||||
|
||||
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)
|
||||
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
|
||||
#endif
|
|
@ -1,10 +1,16 @@
|
|||
#ifndef HEADER_READFILE
|
||||
#define HEADER_READFILE
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdbool.h>
|
||||
#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);
|
||||
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
|
||||
|
||||
|
||||
/**
|
||||
* @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
|
||||
|
|
|
@ -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 :
|
||||
|
|
|
@ -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<MAXLINE;i++)
|
||||
{
|
||||
printf("0x%x, ",string[i]);
|
||||
}
|
||||
printf("\n\n");
|
||||
}
|
Loading…
Add table
Reference in a new issue