commit
9c71acc720
@ -0,0 +1,112 @@
|
||||
/**
|
||||
* \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;i<n;i++)
|
||||
if(comparer(tab[i]->ldevis.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;i<tlog;i++)
|
||||
triEchange(tab[o],tlog);
|
||||
suppression(o);
|
||||
AfficheDevis(l->suiv);
|
||||
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;
|
||||
}
|
Loading…
Reference in new issue