/** * \file fonction2.c * \brief Selection des entreprises en fonction du meilleur devis * \auteurs LAVERGNE Rémi ; DELINAC Inès ; RAYNAUD Camille * \date 12 janvier 2024 */ #include "specification1.h" /** * \brief Faire un tri par échange * \struct[in,out] tab[] tableau de structure de Devis * \param[in] n */ void triEchange (Devis * tab[], int n) { int pge; while(n>1) { pge=plusGrand(tab,n); echanger(tab,pge,n-1); n=n-1; } } /** * \brief Comparer deux devis pour trouver le plus grand * \struct[in,out] tab[] tableau de structure de Devis * \param[out] *offre pointeur des offres * \param[in] n * \return pge Retourne le plus grand entier */ //On veut pas le plus grand mais le plus petit! Le cout le moins chère est plus avantageux int plusGrand(Devis * tab[], int n) { int pge=0; for(int i=1;ildevis.devis.cout,tab[pge]->ldevis.devis.cout)>0) pge=i; return pge; } /** * \brief Comparer deux devis * \struct[in] d1 Devis * \struct[in] d2 Devis * \return cmp Retourne une valeur pour connaitre qui est le plus rentable */ int comparer(Devis d1, Devis d2) { int cmp cmp = d1.cout - d2.cout; if(cmp==0) cmp = d2.capital - d1.capital; return cmp; } /** * \brief Echanger la place des deux devis * \structin,out] typeTravaux tableau des types de travaux * \param[out] *offre pointeur des offres * \param[in] tLog * \return offre[i].ldevis Retourne l'offre dans le devis */ void echanger(Devis * tab[],int i, int j) { Devis * aux; aux = tab[i]; tab[i] = tab[j]; tab[j] = aux; } /** * \brief Rechercher dans la liste des devis * \param[in,out] typeTravaux tableau des types de travaux * \param[out] *offre pointeur des offres * \param[in] tLog * \return offre[i].ldevis Retourne l'offre dans le devis */ void ShowEntrepTache(Offre o, int tlog) { for(int i=0;isuiv); tab[i]=tab[i+1]; } /** * \brief Rechercher dans la liste des devis * \param[in,out] typeTravaux tableau des types de travaux * \param[out] *offre pointeur des offres * \param[in] tLog * \return offre[i].ldevis Retourne l'offre dans le devis */ void suppression(ListeDevis ldevis) { MaillonDevis *m; if (ldevis == NULL) { fprintf("Operation interdite\n"); exit(1); } m=ldevis; while (ldevis->suiv->suiv != NULL) { m = ldevis->suiv; } free(ldevis); return m; }