diff --git a/part1.c b/part1.c index 8cb66e8..5fcf1b2 100644 --- a/part1.c +++ b/part1.c @@ -47,33 +47,30 @@ ListDept Insert(ListDept list, MaillonDept *m)//insert globalement /*étapes pour le chargement: 1) pour chaque ville : malloc VilleIUT ->initialisation à NULL de la liste et fscanf la ville 2) récup le nb pour faire une boucle -3) boucle dans laquelle on crée nb maillons en insertion du département dans la liste en triant +3) boucle dans laquelle on crée nb maillons en inserant département dans la liste en triant et on recommence tant que fichier non vide*/ int Chargement(VilleIUT **tV, int tmax, char *nameFile) { FILE *f; - int i = 0; + int i = 0, cpt; f = fopen(nameFile, "r"); if (f == NULL){printf("pb ouv file"); return -1;} while (!feof(f)) { - int cpt; VilleIUT *v; v = (VilleIUT *)malloc(sizeof(VilleIUT)); if (v == NULL){printf("pb malloc");exit;} fscanf(f, "%s %d", v->ville, &cpt); - printf("**%d**\n", cpt); + for (cpt; cpt > 0; cpt--) { - printf("bleu\n"); MaillonDept *m; - m = (MaillonDept*)malloc(sizeof(MaillonDept)); + m = (MaillonDept*)malloc(sizeof(MaillonDept));//création du maillon if (m == NULL){printf("pb malloc"); exit;} - lireM(f, m); - AfficheDpmt(m); - v->ldept = Insert(v->ldept, m); + lireM(f, m);//lire le maillon avec la fonction plus haut + v->ldept = Insert(v->ldept, m);//insert le maillon à sa bonne place } tV[i] = v; i++; @@ -84,25 +81,125 @@ int Chargement(VilleIUT **tV, int tmax, char *nameFile) } -void AfficheDpmt ( MaillonDept *dpt ){ +void AfficheDpmt ( MaillonDept *dpt )//Affiche un département d'une liste +{ if ( dpt == NULL) return; printf("%s %d %s \n", dpt->departement, dpt->nbP, dpt->respAd); - AfficheDpmt(dpt->suiv);} + AfficheDpmt(dpt->suiv); +} -void afficheIUT (VilleIUT *iut){ +void afficheIUT (VilleIUT *iut)//Affiche un iut avec ses départements +{ printf ("%s \n", iut->ville); AfficheDpmt(iut->ldept); } -void Affichetableau(VilleIUT ** TabIUT, int n ){ +void Affichetableau(VilleIUT ** TabIUT, int n )//Affiche le tableau des iuts avec lerus départements +{ int i; - for ( i = 0 ; i < n ; i++ ) afficheIUT(TabIUT[i]); } + + + +/*étapes de mise à jour du nombre de places: +demande et recherche dans quelle ville chercher le nombre de places d'un département +chercher ville +chercher dpt +changer nbP +return tV le tableau de VilleIUT mis à jour +*/ +VilleIUT** MaJnbP(VilleIUT **tV, int nb) +{ + char ville[31], dpt[31], reponse[31]; + int newnbP; + int v; + ListDept elt; + + printf("De quels département et ville souhaitez vous modifier le nombre de place ?\n"); + printf("Ville : \t"); + scanf("%s%*c", ville); + + v = searchVille(tV, ville, nb); + + while(v == -1)//tant que le nom de la ville n'est pas bon + { + printf("Ville non trouvée ...Rentrez une autre ville ou tapez 0 pour quitter\n"); + scanf("%s", reponse); + if (strcmp(reponse, 0)==0) + { + exit; + } + v = searchVille(tV, ville, nb); + } + + printf("Département : \t"); + fgets(dpt, 31, stdin); + dpt[strlen(dpt)-1] = '\0'; + + elt = recherche(tV[v]->ldept, dpt); + + while(elt == NULL)//tant que le nom du département n'est pas bon + { + printf("Département non trouvé ...Rentrez un autre département ou tapez 0 pour quitter\n"); + scanf("%s", reponse); + if (strcmp(reponse, 0)==0) + { + exit; + } + elt = recherche(tV[v]->ldept, dpt); + } + + printf("Nouveau nombre de places disponibles : \t"); + scanf("%d", &newnbP); + elt->nbP = newnbP; + return tV; +} + + + + +ListDept recherche (ListDept l, char *nom )//recherche du nom de département dans la liste +{ + if ( l == NULL ){ return l;} + if ( strcmp ( l->departement, nom ) == 0) return l; + return recherche (l->suiv, nom ); +} + + +int searchVille(VilleIUT ** tV, char *ville, int nbV)//recherche du nom de la ville dans le tableau +{ + int i =0; + for(i; i < nbV; i++) + { + if (strcmp(ville, tV[i]->ville)==0) + return i; + } + return -1;//sinon c'est que la recherche n'a pas abouti +} + + + + + + + + + + + + + + + + + + + diff --git a/part1.h b/part1.h index dd1e45e..9daf9a7 100644 --- a/part1.h +++ b/part1.h @@ -26,3 +26,6 @@ int Chargement(VilleIUT **tV, int tmax, char *nameFile); void AfficheDpmt ( MaillonDept *dpt ); void afficheIUT (VilleIUT *iut); void Affichetableau(VilleIUT ** TabIUT, int n ); +ListDept recherche (ListDept l, char *nom ); +VilleIUT** MaJnbP(VilleIUT **tV, int nb); +int searchVille(VilleIUT ** tV, char *ville, int nbV); diff --git a/tpart1.c b/tpart1.c index bda1319..01457a9 100644 --- a/tpart1.c +++ b/tpart1.c @@ -10,7 +10,15 @@ int main(void) { VilleIUT *tV[200]; int nb; - nb = Chargement(tV, 200, "part1.don"); + VilleIUT *v; + ListDept l; + nb = Chargement(tV, 200, "part1.don");/* + v = searchVille(tV, "Clermont-Ferrand", nb); + printf("%s", v->ville); + l = recherche(v->ldept, "Informatique"); + printf("%s", l->departement);*/ + MaJnbP(tV, nb); Affichetableau(tV, nb); + return 0; }