|
|
|
@ -2,61 +2,110 @@
|
|
|
|
|
|
|
|
|
|
/*---------------devis---------------*/
|
|
|
|
|
|
|
|
|
|
// Chargement de l'adresse depuis un fichier
|
|
|
|
|
char *readAdress(FILE *flot)
|
|
|
|
|
// Chargement d'une chaine de caracteres depuis un fichier
|
|
|
|
|
char *readFromFile(FILE *file)
|
|
|
|
|
{
|
|
|
|
|
char *adresse, *s, aux[5];
|
|
|
|
|
int i=0, tmax=5;
|
|
|
|
|
adresse = (char *)malloc(sizeof(char)*tmax);
|
|
|
|
|
fgets(adresse, 5, flot);
|
|
|
|
|
char *str;
|
|
|
|
|
char *buf;
|
|
|
|
|
int len = 0;
|
|
|
|
|
int size = 5;
|
|
|
|
|
int add = 5;
|
|
|
|
|
|
|
|
|
|
while (adresse[i]!='\n')
|
|
|
|
|
{
|
|
|
|
|
if (i==tmax - 1)
|
|
|
|
|
{
|
|
|
|
|
tmax+=5;
|
|
|
|
|
s = (char *)realloc(adresse, tmax*sizeof(char));
|
|
|
|
|
if (s==NULL)
|
|
|
|
|
{
|
|
|
|
|
printf("\033[0;31mErreur: \033[0mreallocation pour str adresse\n");
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
adresse=s;
|
|
|
|
|
fgets(aux, 5, flot);
|
|
|
|
|
strcat(adresse, aux);
|
|
|
|
|
}
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
adresse[strlen(adresse)-1]='\0';
|
|
|
|
|
return adresse;
|
|
|
|
|
str = malloc(size);
|
|
|
|
|
if (!str)
|
|
|
|
|
exit(1);
|
|
|
|
|
|
|
|
|
|
while (str[len] != '\n')
|
|
|
|
|
{
|
|
|
|
|
len = strlen(str);
|
|
|
|
|
if (len >= size - 1)
|
|
|
|
|
{
|
|
|
|
|
size += add;
|
|
|
|
|
buf = realloc(str, size);
|
|
|
|
|
if (!buf)
|
|
|
|
|
{
|
|
|
|
|
free(str);
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
str = buf;
|
|
|
|
|
}
|
|
|
|
|
fgets(str + len, size - len, file);
|
|
|
|
|
len = strlen(str) - 1;
|
|
|
|
|
}
|
|
|
|
|
str[len] = '\0';
|
|
|
|
|
return (str);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Chargement d'un devis depuis un fichier
|
|
|
|
|
Devis loadDevis(Offre *tabTravaux[])
|
|
|
|
|
Devis loadDevis(FILE *devisFile, Offre *tabTravaux)
|
|
|
|
|
{
|
|
|
|
|
Devis d;
|
|
|
|
|
FILE *devisFile;
|
|
|
|
|
devisFile=fopen("files/devis.txt","r");
|
|
|
|
|
if (devisFile == NULL)
|
|
|
|
|
{
|
|
|
|
|
printf("\033[0;31mErreur: \033[0mOuverture de devis.txt\n");
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
char travaux[16];
|
|
|
|
|
int index;
|
|
|
|
|
fscanf(devisFile, "%s", travaux);
|
|
|
|
|
index = rechTravaux(travaux, tabTravaux);
|
|
|
|
|
if (index==-1)
|
|
|
|
|
{
|
|
|
|
|
printf("\033[0;31mErreur: \033[0mCes travaux ne sont pas prévus !\n");
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
fgets(d.nomE, 32, devisFile);
|
|
|
|
|
d.nomE[strlen(d.nomE)-1] = '\0';
|
|
|
|
|
d.adresse = readAdress(devisFile);
|
|
|
|
|
fscanf(devisFile, "%d\n%d\n%d", &d.capital, &d.duree, &d.prix);
|
|
|
|
|
fclose(devisFile);
|
|
|
|
|
return d;
|
|
|
|
|
int index;
|
|
|
|
|
char *travaux;
|
|
|
|
|
Devis d;
|
|
|
|
|
MaillonDevis *nouveauMaillon;
|
|
|
|
|
|
|
|
|
|
travaux = readFromFile(devisFile);
|
|
|
|
|
index = rechTravaux(travaux, tabTravaux);
|
|
|
|
|
if (index == -1)
|
|
|
|
|
exit(1);
|
|
|
|
|
|
|
|
|
|
nouveauMaillon = (MaillonDevis *)malloc(sizeof(MaillonDevis));
|
|
|
|
|
if (!nouveauMaillon)
|
|
|
|
|
{
|
|
|
|
|
printf("\033[0;31mErreur: \033[0mallocation mémoire pour nouveauMaillon\n");
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
d.nomE = readFromFile(devisFile);
|
|
|
|
|
d.adresse = readFromFile(devisFile);
|
|
|
|
|
fscanf(devisFile, "%d\n%d\n%d%*c", &d.capital, &d.duree, &d.prix);
|
|
|
|
|
nouveauMaillon->dev = d;
|
|
|
|
|
tabTravaux[index].ldevis = insert(tabTravaux[index].ldevis, d);
|
|
|
|
|
|
|
|
|
|
return (d);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// l'initialisation est temporaire, je ne savais pas comment tu voulais la faire -> à partir du file
|
|
|
|
|
|
|
|
|
|
// initialisation des travaux
|
|
|
|
|
Offre *initTabTravaux(void)
|
|
|
|
|
{
|
|
|
|
|
Offre *tabTravaux;
|
|
|
|
|
|
|
|
|
|
tabTravaux = (Offre *)malloc(TMAXTRAV * sizeof(Offre));
|
|
|
|
|
if (!tabTravaux)
|
|
|
|
|
{
|
|
|
|
|
printf("\033[0;31mErreur: \033[0mmalloc tableau tabTravaux\n");
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Initialisation de chaque élément du tableau
|
|
|
|
|
tabTravaux[0] = newOffre("Electricite");
|
|
|
|
|
tabTravaux[1] = newOffre("Finitions");
|
|
|
|
|
tabTravaux[2] = newOffre("Fondation");
|
|
|
|
|
tabTravaux[3] = newOffre("Murs");
|
|
|
|
|
tabTravaux[4] = newOffre("Peinture");
|
|
|
|
|
tabTravaux[5] = newOffre("Plomberie");
|
|
|
|
|
tabTravaux[6] = newOffre("Sols");
|
|
|
|
|
tabTravaux[7] = newOffre("Structure");
|
|
|
|
|
|
|
|
|
|
return (tabTravaux);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Chagement des ofrres depuis le fichier devis.txt
|
|
|
|
|
Offre *loadOffre(void)
|
|
|
|
|
{
|
|
|
|
|
Offre *tabTravaux = initTabTravaux();
|
|
|
|
|
|
|
|
|
|
FILE *devisFile;
|
|
|
|
|
|
|
|
|
|
devisFile = fopen("files/devis.txt", "r");
|
|
|
|
|
if (!devisFile)
|
|
|
|
|
exit(1);
|
|
|
|
|
|
|
|
|
|
while (!feof(devisFile))
|
|
|
|
|
loadDevis(devisFile, tabTravaux);
|
|
|
|
|
|
|
|
|
|
return (tabTravaux);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -72,7 +121,7 @@ Tache **loadTaches(Offre *tabTravaux[])
|
|
|
|
|
printf("\033[0;31mErreur: \033[0mmalloc tableau tache\n");
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
for (i=0; i<tmaxTravaux; i++)
|
|
|
|
|
for (i=0; i<TMAXTRAV; i++)
|
|
|
|
|
{
|
|
|
|
|
t=(Tache *)malloc(sizeof(Tache));
|
|
|
|
|
if (t==NULL)
|
|
|
|
@ -104,7 +153,7 @@ Precedence *loadPrec(int *tmax, int *tlog)
|
|
|
|
|
{
|
|
|
|
|
FILE *prec;
|
|
|
|
|
Precedence *tabP, *s;
|
|
|
|
|
prec=fopen("files/précédence.txt", "r");
|
|
|
|
|
prec=fopen("../files/précédence.txt", "r");
|
|
|
|
|
if (prec == NULL)
|
|
|
|
|
{
|
|
|
|
|
printf("\033[0;31mErreur: \033[0mouverture de 'précédence.txt'\n");
|
|
|
|
@ -129,4 +178,4 @@ Precedence *loadPrec(int *tmax, int *tlog)
|
|
|
|
|
}
|
|
|
|
|
fclose(prec);
|
|
|
|
|
return tabP;
|
|
|
|
|
}
|
|
|
|
|
}
|