Suppression des coureurs si leur team < 3 coureurs
This commit is contained in:
parent
f39ebcf364
commit
ef5e12585f
2 changed files with 66 additions and 5 deletions
|
@ -4,7 +4,7 @@
|
||||||
#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
|
||||||
#define TEMPSMAX 300
|
#define TEMPSMAX 300
|
||||||
#define TEMPSMIN 80
|
#define TEMPSMIN 80
|
||||||
#define TEMPSDOP 79
|
#define TEMPSDOP 77
|
||||||
|
|
||||||
struct element{ //definition de la structure qui element qui sera encaspule/chaine
|
struct element{ //definition de la structure qui element qui sera encaspule/chaine
|
||||||
coureur * coureurActuel; //"contient" l'adresse d'une structure coureur
|
coureur * coureurActuel; //"contient" l'adresse d'une structure coureur
|
||||||
|
@ -36,5 +36,9 @@ void triListe(liste * l,int taille); //trie bulle des
|
||||||
char ** initMatrix(int sizeCol,int sizeLine);
|
char ** initMatrix(int sizeCol,int sizeLine);
|
||||||
bool isStringInMatrix(char ** matrix, char * string, int size);
|
bool isStringInMatrix(char ** matrix, char * string, int size);
|
||||||
void readTeams(char ** matrix, int sizeCol, int sizeLine, liste l);
|
void readTeams(char ** matrix, int sizeCol, int sizeLine, liste l);
|
||||||
|
int * teamsCount(char ** teamNames, int sizeCol, liste list);
|
||||||
|
void removeTeam(char ** teamNames, int sizeCol, liste * list, int * coureursInTeams, int lessThanCoureurCount);
|
||||||
|
struct element * getElementCourant(liste l);
|
||||||
|
void printTeamsDetails(char ** teamsNames, int * coureurInTeams, int teamsNB);
|
||||||
int test(void);
|
int test(void);
|
||||||
#endif
|
#endif
|
65
src/liste.c
65
src/liste.c
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
int size, stepsNb, teamsNb, listeTaille, dopageCount=0;
|
int size, stepsNb, teamsNb, listeTaille, dopageCount;
|
||||||
srand(time(NULL));
|
srand(time(NULL));
|
||||||
int fileLines = getNbLines();
|
int fileLines = getNbLines();
|
||||||
liste l = getListFromFile(fileLines,&size,&stepsNb,&teamsNb);
|
liste l = getListFromFile(fileLines,&size,&stepsNb,&teamsNb);
|
||||||
|
@ -30,10 +30,15 @@ int main(void)
|
||||||
char ** tabTeam = initMatrix(teamsNb,MAXLINE);
|
char ** tabTeam = initMatrix(teamsNb,MAXLINE);
|
||||||
readTeams(tabTeam,teamsNb,MAXLINE,l);
|
readTeams(tabTeam,teamsNb,MAXLINE,l);
|
||||||
dopageCount=effacerListe(&l,&dopageList);
|
dopageCount=effacerListe(&l,&dopageList);
|
||||||
//printf("\n --- CLASSEMENT GENERAL : ---\n");
|
int * teamCount = teamsCount(tabTeam,teamsNb,l);
|
||||||
|
printf("\n --- TEAMS AND TEAMS COUNT : --- \n");
|
||||||
|
printTeamsDetails(tabTeam,teamCount,teamsNb);
|
||||||
|
printf("\n --- COUREURS SUPPRIMEES --- : \n");
|
||||||
|
removeTeam(tabTeam,teamsNb,&l,teamCount,3);
|
||||||
|
printf("\n --- CLASSEMENT GENERAL : ---\n");
|
||||||
triListe(&l,tailleListe(l));
|
triListe(&l,tailleListe(l));
|
||||||
//printlist(l);
|
printlist(l);
|
||||||
//printf("\n --- NOMBRE DE PERSONNES DOPEES : %d ---\n",dopageCount);
|
printf("\n --- NOMBRE DE PERSONNES DOPEES : %d ---\n",dopageCount);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -390,6 +395,58 @@ void readTeams(char ** matrix, int sizeCol, int sizeLine, liste l)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int * teamsCount(char ** teamNames, int sizeCol, liste list)
|
||||||
|
{
|
||||||
|
int * teamCount = (int *)(malloc(sizeCol*sizeof(int)));
|
||||||
|
memset(teamCount, 0, sizeCol*sizeof(int));
|
||||||
|
struct element * elementCourant = list.courant;
|
||||||
|
struct element * elementFin = list.fin;
|
||||||
|
while(elementCourant->suiv != elementFin->suiv)
|
||||||
|
{
|
||||||
|
for(int i=0;i<sizeCol;i++)
|
||||||
|
{
|
||||||
|
if(strcmp(teamNames[i],elementCourant->coureurActuel->equipe) == 0)
|
||||||
|
{
|
||||||
|
teamCount[i]++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elementCourant=elementCourant->suiv;
|
||||||
|
}
|
||||||
|
return teamCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
void removeTeam(char ** teamNames, int sizeCol, liste * list, int * coureursInTeams, int lessThanCoureurCount)
|
||||||
|
{
|
||||||
|
struct element * elementCourant = list->courant;
|
||||||
|
struct element * elementFin = list->fin;
|
||||||
|
while(elementCourant->suiv != elementFin->suiv)
|
||||||
|
{
|
||||||
|
for(int i=0;i<sizeCol;i++)
|
||||||
|
{
|
||||||
|
if((strcmp(teamNames[i],elementCourant->coureurActuel->equipe)) == 0 && (coureursInTeams[i]<=lessThanCoureurCount))
|
||||||
|
{
|
||||||
|
afficherCoureur(elementCourant->coureurActuel);
|
||||||
|
effacerCoureur(list,elementCourant->coureurActuel);
|
||||||
|
elementCourant=getElementCourant(*list);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elementCourant=elementCourant->suiv;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct element * getElementCourant(liste l)
|
||||||
|
{
|
||||||
|
return l.courant;
|
||||||
|
}
|
||||||
|
|
||||||
|
void printTeamsDetails(char ** teamsNames, int * coureurInTeams, int teamsNB)
|
||||||
|
{
|
||||||
|
for(int i=0;i<teamsNB;i++)
|
||||||
|
{
|
||||||
|
printf("Team [%d] : %s\tCoureurs : %d\n",i,teamsNames[i],coureurInTeams[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int test(void)
|
int test(void)
|
||||||
{
|
{
|
||||||
coureur * c1 = creerCoureur("Paris","Simon",15,"TRAUFORE",50000);
|
coureur * c1 = creerCoureur("Paris","Simon",15,"TRAUFORE",50000);
|
||||||
|
|
Loading…
Add table
Reference in a new issue