From ed6385b2e237826bfb051cb8928160d54036b57d Mon Sep 17 00:00:00 2001 From: "thibaud.la_riviere-gillet" Date: Mon, 8 Jan 2024 21:54:14 +0100 Subject: [PATCH] finally --- files/devis.txt | 2 +- files/précédences.txt | 3 ++- srcs/charge.c | 8 +++++--- srcs/sort.c | 39 ++++++++++++++------------------------- srcs/structures.c | 8 ++++---- 5 files changed, 26 insertions(+), 34 deletions(-) diff --git a/files/devis.txt b/files/devis.txt index 5bd2ab7..9d13031 100644 --- a/files/devis.txt +++ b/files/devis.txt @@ -89,4 +89,4 @@ RéussiteFinale 18, Rue de la Réussite – 63300 – Thiers 120000 25 -15000 +15000 \ No newline at end of file diff --git a/files/précédences.txt b/files/précédences.txt index 6b145c6..56cf03a 100644 --- a/files/précédences.txt +++ b/files/précédences.txt @@ -6,4 +6,5 @@ Electricite Menuiserie Plomberie Sols Murs Peinture Peinture Finitions -Sols Finitions \ No newline at end of file +Sols Finitions + diff --git a/srcs/charge.c b/srcs/charge.c index 64bdd32..c31ceb5 100644 --- a/srcs/charge.c +++ b/srcs/charge.c @@ -71,7 +71,7 @@ Devis loadDevis(FILE *devisFile, Offre *tabTravaux) Devis d; MaillonDevis *nouveauMaillon; - travaux = readFromFile(devisFile); // Meilleur moyen car on perd 8 places de char dans des tab, contre 26 si tab statique + travaux = readFromFile(devisFile); index = rechTravaux(travaux, tabTravaux); if (index == -1) exit(1); @@ -88,10 +88,10 @@ Devis loadDevis(FILE *devisFile, Offre *tabTravaux) nouveauMaillon->dev = d; tabTravaux[index].ldevis = insert(tabTravaux[index].ldevis, d); - return d; + return (d); } -// Chagement des offres depuis le fichier devis.txt +// Chagement des ofrres depuis le fichier devis.txt Offre *loadOffre(void) { Offre *tabTravaux = initTabTravaux(); @@ -108,6 +108,8 @@ Offre *loadOffre(void) return (tabTravaux); } +//--------------------------------------------------------------------------- + /*-----------------precedences----------------------*/ // Chargement des tâches depuis un fichier pour chaque offre diff --git a/srcs/sort.c b/srcs/sort.c index f418f89..cc073db 100644 --- a/srcs/sort.c +++ b/srcs/sort.c @@ -29,42 +29,31 @@ int rechTravaux(char *travauxName, Offre *tabTravaux) void minTravaux(Offre *tabTravaux[]) { int i; - MaillonDevis *minDev, *md, *s; - for(i=0; ildevis; - minDev=md; - while(minDev->suiv != NULL) + l=tabTravaux[i]->ldevis; + minl=l; + while(l) { - md=md->suiv; - if ((md->dev).prix < (minDev->dev).prix) + if(l->dev.prix < minl->dev.prix) { - s=minDev; - minDev=md; + l=delete(minl); + minl=l; } - else if ((md->dev).prix > (minDev->dev).prix) - { - s=md; - } - else - { - if ((md->dev).capital < (minDev->dev).capital) - { - s=minDev; - minDev=md; - } - 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; - } - delete(s); + else + l=delete(l); + l=l->suiv; } - displayListeDevis(minDev); + displayOffre(tabTravaux[i]); } } /*---------------tri------------------*/ +//on la met dans struct.c ? + // Libère la mémoire d'une liste de devis void freeListeDevis(ListeDevis *ldevis) { diff --git a/srcs/structures.c b/srcs/structures.c index cf47ac7..acb6ffd 100644 --- a/srcs/structures.c +++ b/srcs/structures.c @@ -181,8 +181,6 @@ void afficherDevisEntreprise(Offre *tabTravaux) fgets(typeTravaux, sizeof(typeTravaux), stdin); typeTravaux[strlen(typeTravaux) - 1] = '\0'; - printf("%s\n", typeTravaux); - indiceTravaux = rechTravaux(typeTravaux, tabTravaux); if (indiceTravaux == -1) @@ -192,7 +190,7 @@ void afficherDevisEntreprise(Offre *tabTravaux) } maxlen = lenMaxNomEntreprise(tabTravaux[indiceTravaux].ldevis); - nomEntreprise = malloc(maxlen * sizeof(char) + 1); + nomEntreprise = malloc((maxlen + 1) * sizeof(char)); printf("Saisir le nom de l'entreprise : "); fgets(nomEntreprise, maxlen + 1, stdin); @@ -205,14 +203,16 @@ void afficherDevisEntreprise(Offre *tabTravaux) displayDevis(listeDevis->dev); return; } - listeDevis = listeDevis->suiv; + listeDevis = listeDevis->suiv; } printf("Devis non trouvé pour l'entreprise %s dans le type de travaux %s.\n", nomEntreprise, typeTravaux); + free(nomEntreprise); // N'oubliez pas de libérer la mémoire allouée } + // Partie 4 (à trier)