master
parent bc62da0d35
commit 2e1bbb93ce

@ -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);

@ -108,6 +108,9 @@ Offre *loadOffre(void)
return (tabTravaux);
}
//---------------------------------------------------------------------------
/*-----------------precedences----------------------*/
// Chargement des tâches depuis un fichier pour chaque offre
Tache **loadTaches(Offre *tabTravaux[])

@ -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;
}

@ -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)

Loading…
Cancel
Save