diff --git a/header/liste.h b/header/liste.h index da029f2..62f111b 100644 --- a/header/liste.h +++ b/header/liste.h @@ -4,7 +4,7 @@ #include "coureur.h" //inclure le fichier "coureur.h" qui contien les libs et la structure coureur #define TEMPSMAX 300 #define TEMPSMIN 80 -#define TEMPSDOP 79 +#define TEMPSDOP 77 struct element{ //definition de la structure qui element qui sera encaspule/chaine 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); bool isStringInMatrix(char ** matrix, char * string, int size); 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); #endif \ No newline at end of file diff --git a/src/liste.c b/src/liste.c index 1b29db8..111b186 100644 --- a/src/liste.c +++ b/src/liste.c @@ -3,7 +3,7 @@ int main(void) { - int size, stepsNb, teamsNb, listeTaille, dopageCount=0; + int size, stepsNb, teamsNb, listeTaille, dopageCount; srand(time(NULL)); int fileLines = getNbLines(); liste l = getListFromFile(fileLines,&size,&stepsNb,&teamsNb); @@ -30,10 +30,15 @@ int main(void) char ** tabTeam = initMatrix(teamsNb,MAXLINE); readTeams(tabTeam,teamsNb,MAXLINE,l); 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)); - //printlist(l); - //printf("\n --- NOMBRE DE PERSONNES DOPEES : %d ---\n",dopageCount); + printlist(l); + printf("\n --- NOMBRE DE PERSONNES DOPEES : %d ---\n",dopageCount); 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;icoureurActuel->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;icoureurActuel->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