Suppression des coureurs si leur team < 3 coureurs

This commit is contained in:
Yohan Boujon 2022-11-29 23:08:40 +01:00
parent f39ebcf364
commit ef5e12585f
2 changed files with 66 additions and 5 deletions

View file

@ -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

View file

@ -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);