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

/**
* \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;
}