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