Ajout de la fontcion reallocation pour augmenter la taille du tableau. Débuggage du code, tout compile mais pour l'instant les fonctions ne marchent pas.

master
Johnny.Ratton 2 years ago
parent 54026f1469
commit afbeb3a4a8

@ -5,8 +5,7 @@ int chargement(VilleIUT *tiut[],int *tMax)
FILE *flot; FILE *flot;
VilleIUT *v; VilleIUT *v;
MaillonDept *m; MaillonDept *m;
int nb = 0, pos; int nb = 0, pos, trouve;
char trouve;
flot = fopen("IUT.don", "r"); flot = fopen("IUT.don", "r");
if(flot == NULL) if(flot == NULL)
{ {
@ -16,6 +15,10 @@ int chargement(VilleIUT *tiut[],int *tMax)
} }
while(!feof(flot)) while(!feof(flot))
{ {
if(nb == *tMax)
{
tiut = reallocation(tiut,tMax);
}
v = (VilleIUT *)malloc(sizeof(VilleIUT)); v = (VilleIUT *)malloc(sizeof(VilleIUT));
if(v == NULL) if(v == NULL)
{ {
@ -24,6 +27,7 @@ int chargement(VilleIUT *tiut[],int *tMax)
return -2; return -2;
} }
fscanf(flot, "%s", v->nom); fscanf(flot, "%s", v->nom);
printf("Nom de la ville : %s\n", v->nom);
pos = rechercheIUT(tiut, nb, v->nom, &trouve); pos = rechercheIUT(tiut, nb, v->nom, &trouve);
m = (MaillonDept *)malloc(sizeof(MaillonDept)); m = (MaillonDept *)malloc(sizeof(MaillonDept));
if(m == NULL) if(m == NULL)
@ -33,19 +37,19 @@ int chargement(VilleIUT *tiut[],int *tMax)
return -3; return -3;
} }
*m = lireDep(flot); *m = lireDep(flot);
if(trouve == 'O') if(trouve == 1)
{ {
insererDep(tiut[pos],*m); insererDept(*(tiut[pos]), m);
} }
else else
{ {
m->suiv = NULL; m->suiv = NULL;
v->lDept = m; v->lDept = m;
tiut[nb] = v; tiut[nb] = v;
nb++;
} }
free(v); free(v);
free(m); free(m);
nb++;
} }
return nb; return nb;
} }
@ -56,6 +60,7 @@ MaillonDept lireDep(FILE *flot)
fscanf(flot,"%s%d", m.dept, &m.nbP); fscanf(flot,"%s%d", m.dept, &m.nbP);
fgets(m.respAd,31,flot); fgets(m.respAd,31,flot);
m.respAd[strlen(m.respAd) - 1] = '\0'; m.respAd[strlen(m.respAd) - 1] = '\0';
afficherDep(m);
return m; return m;
} }
@ -69,7 +74,7 @@ void afficherVille(VilleIUT v)
printf("%s", v.nom); printf("%s", v.nom);
while(v.lDept != NULL) while(v.lDept != NULL)
{ {
afficherDep(*v.lDept); afficherDep(*(v.lDept));
v.lDept = v.lDept->suiv; v.lDept = v.lDept->suiv;
} }
} }
@ -83,6 +88,76 @@ void afficherTIUT(VilleIUT *tiut[], int tLog)
} }
} }
int rechercheIUT(VilleIUT *tiut[], int tLog, char ville[], int *trouve)
{
int inf,sup,t;
inf = 0;
sup = tLog - 1;
while(inf <= sup)
{
t = (inf + sup) / 2;
if(strcmp(ville, tiut[t]->nom) == 0)
{
*trouve = 1;
return t;
}
if(strcmp(ville, tiut[t]->nom) < 0)
{
sup = t - 1;
}
else
{
inf = t + 1;
}
}
*trouve = 0;
return inf;
}
int insererDept(VilleIUT v, MaillonDept *m)
{
int trouve;
MaillonDept *pos;
pos = rechercheDept(v.lDept,&trouve,m->dept);
printf("Valeur de trouve : %d", trouve);
if(trouve == 1)
{
printf("\nDépartement déjà présent dans cet IUT\n");
return -1;
}
m->suiv = pos;
pos = m;
return 1;
}
MaillonDept* rechercheDept(ListeDept lDept, int *trouve, char nom[])
{
while(lDept->suiv != NULL)
{
if(strcmp(nom,lDept->dept) == 0)
{
*trouve = 1;
return lDept;
}
if(strcmp(nom,lDept->dept) < 0)
{
*trouve=0;
return lDept;
}
lDept = lDept->suiv;
}
*trouve = 0;
return lDept;
}
VilleIUT** reallocation(VilleIUT *tiut[], int *tMax)
{
VilleIUT **aux;
aux = (VilleIUT **)realloc(tiut, (sizeof(VilleIUT *) * (*tMax)) + 5);
*tMax = *tMax + 5;
return aux;
}
void globale(void) void globale(void)
{ {
int tLog, tMax = 10; int tLog, tMax = 10;
@ -99,4 +174,5 @@ void globale(void)
printf("Le programme ne peut pas fonctionner\n"); printf("Le programme ne peut pas fonctionner\n");
exit(1); exit(1);
} }
afficherTIUT(tiut, tLog);
} }

@ -1 +1,7 @@
#include "Jsae.h" #include "Jsae.h"
int main(void)
{
globale();
return 0;
}
Loading…
Cancel
Save