|
|
|
@ -5,14 +5,12 @@
|
|
|
|
|
// Initialise une liste de devis
|
|
|
|
|
ListeDevis newListeDevis(void)
|
|
|
|
|
{
|
|
|
|
|
printf("\n*-*-* NEWLISTEDEVIS *-*-*\n");
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Initialise une nouvelle offre
|
|
|
|
|
Offre *newOffre(char *travauxName)
|
|
|
|
|
{
|
|
|
|
|
printf("\n*-*-* NEWOFFRE *-*-*\n");
|
|
|
|
|
Offre *o;
|
|
|
|
|
o = (Offre *)malloc(sizeof(Offre));
|
|
|
|
|
strcpy(o->travaux, travauxName);
|
|
|
|
@ -23,7 +21,6 @@ Offre *newOffre(char *travauxName)
|
|
|
|
|
// Initialise une liste (pour les successeurs)
|
|
|
|
|
Liste newListe(void)
|
|
|
|
|
{
|
|
|
|
|
printf("\n*-*-* NEWLISTE *-*-*\n");
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -32,14 +29,12 @@ Liste newListe(void)
|
|
|
|
|
// Verifie l'integrite d'une liste de devis
|
|
|
|
|
Booleen emptyListe(ListeDevis l)
|
|
|
|
|
{
|
|
|
|
|
printf("\n*-*-* EMPTYLISTE *-*-*\n");
|
|
|
|
|
return l==NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Vérifie l'intégrité de l'offre
|
|
|
|
|
Booleen emptyOffre(Offre *o)
|
|
|
|
|
{
|
|
|
|
|
printf("\n*-*-* EMPTYOFFRE *-*-*\n");
|
|
|
|
|
return emptyListe(o->ldevis);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -48,7 +43,6 @@ Booleen emptyOffre(Offre *o)
|
|
|
|
|
// Insere un devis en tete de la liste des devis
|
|
|
|
|
ListeDevis insert(ListeDevis l, Devis d)
|
|
|
|
|
{
|
|
|
|
|
printf("\n*-*-* INSERT *-*-*\n");
|
|
|
|
|
MaillonDevis *md;
|
|
|
|
|
md = (MaillonDevis *)malloc(sizeof(MaillonDevis));
|
|
|
|
|
if (md == NULL)
|
|
|
|
@ -65,7 +59,6 @@ ListeDevis insert(ListeDevis l, Devis d)
|
|
|
|
|
|
|
|
|
|
Liste insertSucc(Liste l, char travaux[])
|
|
|
|
|
{
|
|
|
|
|
printf("\n*-*-* INSERTSUCC *-*-*\n");
|
|
|
|
|
MaillonSucc *ms;
|
|
|
|
|
ms = (MaillonSucc *)malloc(sizeof(MaillonSucc));
|
|
|
|
|
if (ms == NULL)
|
|
|
|
@ -84,35 +77,37 @@ Liste insertSucc(Liste l, char travaux[])
|
|
|
|
|
// Supprime le premier maillon de la liste de devis
|
|
|
|
|
ListeDevis del(ListeDevis l)
|
|
|
|
|
{
|
|
|
|
|
printf("\n*-*-* DEL *-*-*\n");
|
|
|
|
|
MaillonDevis *md;
|
|
|
|
|
if (l==NULL)
|
|
|
|
|
{
|
|
|
|
|
printf("\033[0;31mErreur: \033[0msuppression dans une liste vide\n");
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
if (l->suiv==NULL)
|
|
|
|
|
return newListeDevis();
|
|
|
|
|
md=l;
|
|
|
|
|
l=l->suiv;
|
|
|
|
|
free(md->dev.nomE);
|
|
|
|
|
free(md->dev.adresse);
|
|
|
|
|
free(md);
|
|
|
|
|
md=NULL;
|
|
|
|
|
printf("\n\nADRESSE md %s\n", md->dev.adresse);
|
|
|
|
|
printf("\n\nNOM md %s\n", md->dev.nomE);
|
|
|
|
|
printf("\n\nADRESSE l %s\n", l->dev.adresse);
|
|
|
|
|
printf("\n\nNOM l %s\n", l->dev.nomE);
|
|
|
|
|
|
|
|
|
|
return l;
|
|
|
|
|
MaillonDevis *md;
|
|
|
|
|
if (l == NULL)
|
|
|
|
|
{
|
|
|
|
|
printf("\033[0;31mErreur: \033[0msuppression dans une liste vide\n");
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
md = l;
|
|
|
|
|
l = l->suiv;
|
|
|
|
|
|
|
|
|
|
if (md->suiv == NULL)
|
|
|
|
|
{
|
|
|
|
|
free(md->dev.nomE);
|
|
|
|
|
free(md->dev.adresse);
|
|
|
|
|
free(md);
|
|
|
|
|
return newListeDevis();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
free(md->dev.nomE);
|
|
|
|
|
free(md->dev.adresse);
|
|
|
|
|
free(md);
|
|
|
|
|
return l;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*---------------calculs----------------*/
|
|
|
|
|
|
|
|
|
|
// Calcule la longueur de la liste de devis
|
|
|
|
|
int lenListeDevis(ListeDevis l)
|
|
|
|
|
{
|
|
|
|
|
printf("\n*-*-* LENLISTEDEVIS *-*-*\n");
|
|
|
|
|
int len=0;
|
|
|
|
|
while (l)
|
|
|
|
|
{
|
|
|
|
@ -124,7 +119,6 @@ int lenListeDevis(ListeDevis l)
|
|
|
|
|
|
|
|
|
|
int lenMaxNomEntreprise(ListeDevis ldevis)
|
|
|
|
|
{
|
|
|
|
|
printf("\n*-*-* LENMAXNOMENTREPRISE *-*-*\n");
|
|
|
|
|
int maxLen;
|
|
|
|
|
int len;
|
|
|
|
|
|
|
|
|
@ -142,7 +136,6 @@ int lenMaxNomEntreprise(ListeDevis ldevis)
|
|
|
|
|
// Calcule le nombre de precedences pour un travail donne
|
|
|
|
|
int nombrePred(char travaux[], Precedence prec[], int tlog)
|
|
|
|
|
{
|
|
|
|
|
printf("\n*-*-* NOMBREPRED *-*-*\n");
|
|
|
|
|
int nbPred = 0, i;
|
|
|
|
|
for (i=0; i<tlog; i++)
|
|
|
|
|
if (strcmp(travaux, prec[i].travauxSucc)==0)
|
|
|
|
@ -155,7 +148,6 @@ int nombrePred(char travaux[], Precedence prec[], int tlog)
|
|
|
|
|
// Retourne une liste des successeurs pour un travail donne
|
|
|
|
|
Liste lstSucc(char travaux[], Precedence prec[], int tlog)
|
|
|
|
|
{
|
|
|
|
|
printf("\n*-*-* LSTSUCC *-*-*\n");
|
|
|
|
|
Liste succ = newListe();
|
|
|
|
|
int i;
|
|
|
|
|
for (i=0; i<tlog; i++)
|
|
|
|
@ -169,22 +161,19 @@ Liste lstSucc(char travaux[], Precedence prec[], int tlog)
|
|
|
|
|
// Affiche les details d'un devis
|
|
|
|
|
void displayDevis(Devis d)
|
|
|
|
|
{
|
|
|
|
|
printf("\n*-*-* DISPLAYDEVIS *-*-*\n");
|
|
|
|
|
printf("%s\t%s\t%d\t%d\t%d\n", d.nomE, d.adresse, d.capital, d.duree, d.prix);
|
|
|
|
|
printf("\t%s\t%s\t%d\t%d\t%d\n", d.nomE, d.adresse, d.capital, d.duree, d.prix);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Affiche les details de l'offre et sa liste de devis
|
|
|
|
|
void displayOffre(Offre *o)
|
|
|
|
|
{
|
|
|
|
|
printf("\n*-*-* DISPLAYOFFRE *-*-*\n");
|
|
|
|
|
printf("\n%s\n\t", o->travaux);
|
|
|
|
|
printf("\n%s\n", o->travaux);
|
|
|
|
|
displayListeDevis(o->ldevis);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Affiche les details de la liste de devis
|
|
|
|
|
void displayListeDevis(ListeDevis l)
|
|
|
|
|
{
|
|
|
|
|
printf("\n*-*-* DISPLAYLISTEDEVIS *-*-*\n");
|
|
|
|
|
while(l != NULL)
|
|
|
|
|
{
|
|
|
|
|
displayDevis(l->dev);
|
|
|
|
@ -195,7 +184,6 @@ void displayListeDevis(ListeDevis l)
|
|
|
|
|
// Fonction pour afficher le devis d'une entreprise donnée pour un type de travaux donné
|
|
|
|
|
void afficherDevisEntreprise(Offre **tabTravaux)
|
|
|
|
|
{
|
|
|
|
|
printf("\n*-*-* AFFICHERDEVISENTREPRISE *-*-*\n");
|
|
|
|
|
int indiceTravaux;
|
|
|
|
|
int maxlen;
|
|
|
|
|
char typeTravaux[30];
|
|
|
|
|