Ajout d'une fonction ne gardant que N coureurs, attention il faut que l'équipe soit dans l'ordre
This commit is contained in:
parent
ef5e12585f
commit
5609dc0309
2 changed files with 45 additions and 12 deletions
|
@ -26,7 +26,7 @@ void allerDebut(liste * l); //mettre le poit
|
|||
void allerFin(liste * l); //mettre le poiteur courant sur l'element de fin d'une liste
|
||||
void avancer(liste * l); //mettre le poiteur courant sur l'element suivant de la liste dans la qu'elle qu'il pointe
|
||||
coureur * coureurCourant(liste * l); //rien a foutre ici
|
||||
bool effacerCoureur(liste * listeActuel,coureur * coureurSuppr);//enleve un element d'une liste a partir de l'adresse d'un courreur, sans briser le chainage
|
||||
bool effacerCoureur(liste * listeActuel,coureur * coureurSuppr, bool returnSuiv);//enleve un element d'une liste a partir de l'adresse d'un courreur, sans briser le chainage
|
||||
bool doesCoureurExist(liste* l,coureur * c);
|
||||
int effacerListe(liste * destination, liste * source);
|
||||
int tailleListe(liste l); //retourne le nombre d'elements chaine d'une liste
|
||||
|
|
49
src/liste.c
49
src/liste.c
|
@ -1,5 +1,6 @@
|
|||
#include "../header/readfile.h"
|
||||
#include "../header/liste.h"
|
||||
#define MAXTEAMATES 3
|
||||
|
||||
int main(void)
|
||||
{
|
||||
|
@ -33,8 +34,12 @@ int main(void)
|
|||
int * teamCount = teamsCount(tabTeam,teamsNb,l);
|
||||
printf("\n --- TEAMS AND TEAMS COUNT : --- \n");
|
||||
printTeamsDetails(tabTeam,teamCount,teamsNb);
|
||||
printlist(l);
|
||||
printf("\n --- TROIS COUREURS RESTANTS --- : \n");
|
||||
keepOnlyCoureur(3,&l,tabTeam,teamsNb);
|
||||
printlist(l);
|
||||
printf("\n --- COUREURS SUPPRIMEES --- : \n");
|
||||
removeTeam(tabTeam,teamsNb,&l,teamCount,3);
|
||||
removeTeam(tabTeam,teamsNb,&l,teamCount,MAXTEAMATES);
|
||||
printf("\n --- CLASSEMENT GENERAL : ---\n");
|
||||
triListe(&l,tailleListe(l));
|
||||
printlist(l);
|
||||
|
@ -171,7 +176,7 @@ coureur * coureurCourant(liste * l)
|
|||
* @param listeActuel Liste ou l'on suppr un element
|
||||
* @param coureurSuppr le coureur qui doit etre dans l'element pour le supprimer
|
||||
*/
|
||||
bool effacerCoureur(liste * listeActuel,coureur * coureurSuppr)
|
||||
bool effacerCoureur(liste * listeActuel,coureur * coureurSuppr, bool returnSuiv)
|
||||
{
|
||||
if(!doesCoureurExist(listeActuel,coureurSuppr))
|
||||
{
|
||||
|
@ -193,6 +198,10 @@ bool effacerCoureur(liste * listeActuel,coureur * coureurSuppr)
|
|||
}
|
||||
ePrevious->suiv=eParcours->suiv;
|
||||
free(eParcours);
|
||||
if(returnSuiv)
|
||||
{
|
||||
listeActuel->courant=ePrevious;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -217,7 +226,7 @@ int effacerListe(liste * destination, liste * source)
|
|||
struct element * eCourant = source->debut;
|
||||
while(eCourant->suiv != source->fin->suiv)
|
||||
{
|
||||
if(effacerCoureur(destination,eCourant->coureurActuel))
|
||||
if(effacerCoureur(destination,eCourant->coureurActuel,false))
|
||||
{
|
||||
returnValue++;
|
||||
}
|
||||
|
@ -426,7 +435,7 @@ void removeTeam(char ** teamNames, int sizeCol, liste * list, int * coureursInTe
|
|||
if((strcmp(teamNames[i],elementCourant->coureurActuel->equipe)) == 0 && (coureursInTeams[i]<=lessThanCoureurCount))
|
||||
{
|
||||
afficherCoureur(elementCourant->coureurActuel);
|
||||
effacerCoureur(list,elementCourant->coureurActuel);
|
||||
effacerCoureur(list,elementCourant->coureurActuel,false);
|
||||
elementCourant=getElementCourant(*list);
|
||||
}
|
||||
}
|
||||
|
@ -447,6 +456,30 @@ void printTeamsDetails(char ** teamsNames, int * coureurInTeams, int teamsNB)
|
|||
}
|
||||
}
|
||||
|
||||
void keepOnlyCoureur(int maxCoureur, liste * list, char ** teamNames, int sizeCol)
|
||||
{
|
||||
int k=0,j=0;
|
||||
struct element * elementCourant = list->courant;
|
||||
struct element * elementFin = list->fin;
|
||||
while(elementCourant->suiv != elementFin->suiv)
|
||||
{
|
||||
if(strcmp(teamNames[k],elementCourant->coureurActuel->equipe) == 0)
|
||||
{
|
||||
if(j>=maxCoureur)
|
||||
{
|
||||
effacerCoureur(list,elementCourant->coureurActuel,true);
|
||||
elementCourant=getElementCourant(*list);
|
||||
}
|
||||
j++;
|
||||
}
|
||||
else{
|
||||
k++;
|
||||
j=1;
|
||||
}
|
||||
elementCourant=elementCourant->suiv;
|
||||
}
|
||||
}
|
||||
|
||||
int test(void)
|
||||
{
|
||||
coureur * c1 = creerCoureur("Paris","Simon",15,"TRAUFORE",50000);
|
||||
|
@ -469,7 +502,7 @@ int test(void)
|
|||
ajoutListe(&l1,c6);
|
||||
printf(" -- AJOUT LISTE, taille =%d -- \n",tailleListe(l1));
|
||||
printlist(l1);
|
||||
effacerCoureur(&l1,c2);
|
||||
effacerCoureur(&l1,c2,false);
|
||||
printf(" -- SUPR LISTE, taille =%d -- \n",tailleListe(l1));
|
||||
printlist(l1);
|
||||
printf(" -- INTERVERTI COUREUR 1 ET 2 DE LA LISTE -- \n");
|
||||
|
@ -484,9 +517,9 @@ int test(void)
|
|||
triListe(&l1,tailleListe(l1));
|
||||
printlist(l1);
|
||||
printf(" -- SUPPRIME UN COUREUR N'EXISTANT PAS -- \n");
|
||||
effacerCoureur(&l1,c7);
|
||||
effacerCoureur(&l1,c3);
|
||||
effacerCoureur(&l1,c4);
|
||||
effacerCoureur(&l1,c7,false);
|
||||
effacerCoureur(&l1,c3,false);
|
||||
effacerCoureur(&l1,c4,false);
|
||||
printf("Does c3 exists : %d\tand c4 ? : %d\n",doesCoureurExist(&l1,c3),doesCoureurExist(&l1,c4));
|
||||
printlist(l1);
|
||||
return 0;
|
||||
|
|
Loading…
Add table
Reference in a new issue