master
Roxane ROSSETTO 2 years ago
commit 6beed8639d

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

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

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

Loading…
Cancel
Save