From 2e1bbb93ce83e6cfbc508d9b9237ec1ea62e13b3 Mon Sep 17 00:00:00 2001 From: "thibaud.la_riviere-gillet" Date: Mon, 8 Jan 2024 14:24:09 +0100 Subject: [PATCH] new print --- includes/charge.h | 5 +++- srcs/charge.c | 3 +++ srcs/main.c | 20 ++++++++-------- srcs/structures.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 77 insertions(+), 10 deletions(-) diff --git a/includes/charge.h b/includes/charge.h index 736948c..eba0d0d 100644 --- a/includes/charge.h +++ b/includes/charge.h @@ -21,7 +21,7 @@ void gestionElementsRestants(ListeDevis *mergedList, ListeDevis *last, ListeDev void fusionMaillonDevis(ListeDevis R, int tlogR, ListeDevis S, int tlogS, ListeDevis *T); void triFusionListeDevis(ListeDevis *ldevis, int tlog); -// Foncctions de base +// Fonctions de base int lenListeDevis(ListeDevis l); int nombrePred(char travaux[], Precedence prec[], int tlog); @@ -37,3 +37,6 @@ Liste lstSucc(char travaux[], Precedence prec[], int tlog); ListeDevis delete(ListeDevis l); ListeDevis insert(ListeDevis l, Devis d); ListeDevis newListeDevis(void); +int longueurMaxNomEntreprise(ListeDevis ldevis); +void afficherDevisEntreprise(Offre *tabTravaux); + diff --git a/srcs/charge.c b/srcs/charge.c index 5508bda..c31ceb5 100644 --- a/srcs/charge.c +++ b/srcs/charge.c @@ -108,6 +108,9 @@ Offre *loadOffre(void) return (tabTravaux); } +//--------------------------------------------------------------------------- + +/*-----------------precedences----------------------*/ // Chargement des tâches depuis un fichier pour chaque offre Tache **loadTaches(Offre *tabTravaux[]) diff --git a/srcs/main.c b/srcs/main.c index 110a8ef..2c527f2 100644 --- a/srcs/main.c +++ b/srcs/main.c @@ -2,16 +2,18 @@ int main() { - Offre *tabTravaux; + Offre *tabTravaux; - tabTravaux = loadOffre(); + tabTravaux = loadOffre(); - for (int i = 0; i < TMAXTRAV; i++) - { - triFusionListeDevis(&tabTravaux[i].ldevis, lenListeDevis(tabTravaux[i].ldevis)); - displayOffre(&tabTravaux[i]); - printf("\n"); - } + for (int i = 0; i < TMAXTRAV; i++) + { + triFusionListeDevis(&tabTravaux[i].ldevis, lenListeDevis(tabTravaux[i].ldevis)); + displayOffre(&tabTravaux[i]); + printf("\n"); + } - return 0; + afficherDevisEntreprise(tabTravaux); + + return 0; } diff --git a/srcs/structures.c b/srcs/structures.c index 2577868..ddb8bec 100644 --- a/srcs/structures.c +++ b/srcs/structures.c @@ -102,6 +102,22 @@ int lenListeDevis(ListeDevis l) return len; } +int lenMaxNomEntreprise(ListeDevis ldevis) +{ + int maxLen; + int len; + + maxLen = 0; + while (ldevis) + { + len = strlen(ldevis->dev.nomE); + if (len > maxLen) + maxLen = len; + ldevis = ldevis->suiv; + } + return maxLen; +} + // Calcule le nombre de precedences pour un travail donne int nombrePred(char travaux[], Precedence prec[], int tlog) { @@ -151,6 +167,49 @@ void displayListeDevis(ListeDevis l) } } +// Fonction pour afficher le devis d'une entreprise donnée pour un type de travaux donné +void afficherDevisEntreprise(Offre *tabTravaux) +{ + int indiceTravaux; + int maxlen; + char typeTravaux[30]; + char *nomEntreprise; + + printf("Saisir le type de travaux : "); + fgets(typeTravaux, sizeof(typeTravaux), stdin); + typeTravaux[strlen(typeTravaux) - 1] = '\0'; + + printf("%s\n", typeTravaux); + + indiceTravaux = rechTravaux(typeTravaux, tabTravaux); + + if (indiceTravaux == -1) + { + printf("Type de travaux non trouvé.\n"); + return; + } + + maxlen = lenMaxNomEntreprise(tabTravaux[indiceTravaux].ldevis); + nomEntreprise = malloc(maxlen * sizeof(char) + 1); + printf("Saisir le nom de l'entreprise : "); + fgets(nomEntreprise, maxlen + 1, stdin); + + ListeDevis listeDevis = tabTravaux[indiceTravaux].ldevis; + while (listeDevis) + { + if (strcmp(listeDevis->dev.nomE, nomEntreprise) == 0) + { + printf("Devis pour %s de l'entreprise %s :\n", typeTravaux, nomEntreprise); + displayDevis(listeDevis->dev); + return; + } + listeDevis = listeDevis->suiv; + } + + printf("Devis non trouvé pour l'entreprise %s dans le type de travaux %s.\n", nomEntreprise, typeTravaux); +} + + // Partie 4 (à trier)