Gestion d'erreyrs

master
Louis GERMAIN 1 year ago
parent 9c3688163d
commit 5de2f25e3c

BIN
SAE2

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -5,6 +5,7 @@
// initialisation des travaux
Offre **initTabTravaux(void)
{
printf("*-*-* INITTABTRAVAUX *-*-*");
Offre **tabTravaux;
tabTravaux = (Offre **)malloc(TMAXTRAV* sizeof(Offre *));
@ -32,6 +33,7 @@ Offre **initTabTravaux(void)
// Chargement d'une chaine de caracteres depuis un fichier
char *readFromFile(FILE *file)
{
printf("*-*-* READFROMFILE *-*-*");
char *str, *buf, s[6];
int i=0, tmax = 5;
str = (char *)malloc(tmax*sizeof(char));
@ -56,15 +58,16 @@ char *readFromFile(FILE *file)
fgets(s, 5, file);
strcat(str, s);
}
printf("%s\n",str);
i++;
}
str[strlen(str)-1] = '\0';
return str;
}
// Chargement d'un devis depuis un fichier
void loadDevis(FILE *devisFile, Offre **tabTravaux)
{
printf("*-*-* LOADDEVIS *-*-*");
int index;
char *travaux;
Devis d;
@ -88,9 +91,10 @@ void loadDevis(FILE *devisFile, Offre **tabTravaux)
tabTravaux[index]->ldevis = insert(tabTravaux[index]->ldevis, d);
}
// Chagement des ofrres depuis le fichier devis.txt
// Chagement des offres depuis le fichier devis.txt
Offre **loadOffre(void)
{
printf("*-*-* LOADOFFRE *-*-*");
Offre **tabTravaux = initTabTravaux();
FILE *devisFile;
@ -112,6 +116,7 @@ Offre **loadOffre(void)
// Chargement des tâches depuis un fichier pour chaque offre
Tache **loadTaches(Offre *tabTravaux[])
{
printf("*-*-* LOADTACHES *-*-*");
Precedence *prec;
int i, tmaxPrec=5, tlogPrec;
Tache *t, **tabTache;
@ -151,6 +156,7 @@ Tache **loadTaches(Offre *tabTravaux[])
// Chargement des précédences depuis un fichier
Precedence *loadPrec(int *tmax, int *tlog)
{
printf("*-*-* LOADPREC *-*-*");
FILE *prec;
Precedence *tabP, *s;
prec=fopen("../files/précédence.txt", "r");

@ -6,6 +6,7 @@
// Retourne l'indice de l'offre dans le tableau si elle est trouvée, sinon retourne -1
int rechTravaux(char *travauxName, Offre **tabTravaux)
{
printf("*-*-* RECHTRAVAUX *-*-*");
//On utilise la taille max de travaux car travaux est un tableau constant, sa taille max est égale à sa taille logique.
int deb=0, end=TMAXTRAV-1, mid;
@ -28,6 +29,7 @@ int rechTravaux(char *travauxName, Offre **tabTravaux)
// Affiche chaque offre gardee avec le devis ayant le prix le plus bas
void minTravaux(Offre *tabTravaux[])
{
printf("*-*-* MINTRAVAUX *-*-*");
int i;
MaillonDevis *minDev, *md, *s;
for(i=0; i<TMAXTRAV; i++)
@ -53,10 +55,9 @@ void minTravaux(Offre *tabTravaux[])
else // On met else et pas else if car on ne peut pas garder 2 égaux, il faut qd même en supprimer un
s=md;
}
displayOffre(tabTravaux[i]);
md=md->suiv;
del(s);
printf("HELLO3\n");
displayOffre(tabTravaux[i]);
}
displayOffre(tabTravaux[i]);
@ -72,6 +73,7 @@ void minTravaux(Offre *tabTravaux[])
// Libère la mémoire d'une liste de devis
void freeListeDevis(ListeDevis *ldevis)
{
printf("*-*-* FREELISTEDEVIS *-*-*");
ListeDevis current = *ldevis;
ListeDevis next;
@ -87,6 +89,7 @@ void freeListeDevis(ListeDevis *ldevis)
// Boucle principale de fusion de listes de devis
void fusionDevisElements(ListeDevis *R, int *tlogR, ListeDevis *S, int *tlogS, ListeDevis *mergedList, ListeDevis *last, int *k)
{
printf("*-*-* FUSIONDEVISELEMENTS *-*-*");
ListeDevis *current;
while (*tlogR > 0 && *tlogS > 0)
@ -121,6 +124,7 @@ void fusionDevisElements(ListeDevis *R, int *tlogR, ListeDevis *S, int *tlogS, L
// Gère les éléments restants après les itérations principales de fusion
void gestionElementsRestants(ListeDevis *mergedList, ListeDevis *last, ListeDevis *source, int *tlogSource, int *k)
{
printf("*-*-* GESTIONELEMENTSRESTANTS *-*-*");
while (*tlogSource > 0)
{
if (!*mergedList)
@ -141,6 +145,7 @@ void gestionElementsRestants(ListeDevis *mergedList, ListeDevis *last, ListeDevi
// Fusionne deux listes de devis triées en une seule liste triée
void fusionMaillonDevis(ListeDevis R, int tlogR, ListeDevis S, int tlogS, ListeDevis *T)
{
printf("*-*-* FUSIONMAILLONDEVIS *-*-*");
ListeDevis last;
ListeDevis mergedList;
int k;
@ -158,6 +163,7 @@ void fusionMaillonDevis(ListeDevis R, int tlogR, ListeDevis S, int tlogS, ListeD
// Tri fusion sur une liste de devis
void triFusionListeDevis(ListeDevis ldevis, int tlog)
{
printf("*-*-* TRIFUSIONLISTEDEVIS *-*-*");
ListeDevis p;
ListeDevis q;
ListeDevis qTemp;

@ -5,12 +5,14 @@
// Initialise une liste de devis
ListeDevis newListeDevis(void)
{
printf("*-*-* NEWLISTEDEVIS *-*-*");
return NULL;
}
// Initialise une nouvelle offre
Offre *newOffre(char *travauxName)
{
printf("*-*-* NEWOFFRE *-*-*");
Offre *o;
o = (Offre *)malloc(sizeof(Offre));
strcpy(o->travaux, travauxName);
@ -21,6 +23,7 @@ Offre *newOffre(char *travauxName)
// Initialise une liste (pour les successeurs)
Liste newListe(void)
{
printf("*-*-* NEWLISTE *-*-*");
return NULL;
}
@ -29,12 +32,14 @@ Liste newListe(void)
// Verifie l'integrite d'une liste de devis
Booleen emptyListe(ListeDevis l)
{
printf("*-*-* EMPTYLISTE *-*-*");
return l==NULL;
}
// Vérifie l'intégrité de l'offre
Booleen emptyOffre(Offre *o)
{
printf("*-*-* EMPTYOFFRE *-*-*");
return emptyListe(o->ldevis);
}
@ -43,6 +48,7 @@ Booleen emptyOffre(Offre *o)
// Insere un devis en tete de la liste des devis
ListeDevis insert(ListeDevis l, Devis d)
{
printf("*-*-* INSERT *-*-*");
MaillonDevis *md;
md = (MaillonDevis *)malloc(sizeof(MaillonDevis));
if (md == NULL)
@ -59,6 +65,7 @@ ListeDevis insert(ListeDevis l, Devis d)
Liste insertSucc(Liste l, char travaux[])
{
printf("*-*-* INSERTSUCC *-*-*");
MaillonSucc *ms;
ms = (MaillonSucc *)malloc(sizeof(MaillonSucc));
if (ms == NULL)
@ -77,6 +84,7 @@ Liste insertSucc(Liste l, char travaux[])
// Supprime le premier maillon de la liste de devis
ListeDevis del(ListeDevis l)
{
printf("*-*-* DEL *-*-*");
MaillonDevis *md;
if (l==NULL)
{
@ -86,12 +94,16 @@ ListeDevis del(ListeDevis l)
if (l->suiv==NULL)
return newListeDevis();
md=l;
printf("HELLO\n");
l=l->suiv;
free(md->dev.nomE);
free(md->dev.adresse);
free(md);
printf("HELLO2\n");
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;
}
@ -100,6 +112,7 @@ ListeDevis del(ListeDevis l)
// Calcule la longueur de la liste de devis
int lenListeDevis(ListeDevis l)
{
printf("*-*-* LENLISTEDEVIS *-*-*");
int len=0;
while (l)
{
@ -111,6 +124,7 @@ int lenListeDevis(ListeDevis l)
int lenMaxNomEntreprise(ListeDevis ldevis)
{
printf("*-*-* LENMAXNOMENTREPRISE *-*-*");
int maxLen;
int len;
@ -128,6 +142,7 @@ int lenMaxNomEntreprise(ListeDevis ldevis)
// Calcule le nombre de precedences pour un travail donne
int nombrePred(char travaux[], Precedence prec[], int tlog)
{
printf("*-*-* NOMBREPRED *-*-*");
int nbPred = 0, i;
for (i=0; i<tlog; i++)
if (strcmp(travaux, prec[i].travauxSucc)==0)
@ -140,6 +155,7 @@ 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("*-*-* LSTSUCC *-*-*");
Liste succ = newListe();
int i;
for (i=0; i<tlog; i++)
@ -153,21 +169,24 @@ Liste lstSucc(char travaux[], Precedence prec[], int tlog)
// Affiche les details d'un devis
void displayDevis(Devis d)
{
printf("\n\t");
printf("%s\t%s\t%d\t%d\t%d", d.nomE, d.adresse, d.capital, d.duree, d.prix);
printf("*-*-* DISPLAYDEVIS *-*-*\n");
printf("%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%s", o->travaux);
printf("\n*-*-* DISPLAYOFFRE *-*-*\n");
printf("\n%s\n\t", o->travaux);
displayListeDevis(o->ldevis);
printf("\n *-*-* DISPLAYOFFREOUT *-*-*");
}
// Affiche les details de la liste de devis
void displayListeDevis(ListeDevis l)
{
while(l)
printf("*-*-* DISPLAYLISTEDEVIS *-*-*");
while(l != NULL)
{
displayDevis(l->dev);
l=l->suiv;
@ -177,6 +196,7 @@ 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("*-*-* AFFICHERDEVISENTREPRISE *-*-*");
int indiceTravaux;
int maxlen;
char typeTravaux[30];

Loading…
Cancel
Save