You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
2.8 KiB
112 lines
2.8 KiB
/**
|
|
* \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;
|
|
} |