|
|
|
@ -4,7 +4,7 @@
|
|
|
|
|
|
|
|
|
|
// Recherche d'une offre dans le tableau de travaux
|
|
|
|
|
// Retourne l'indice de l'offre dans le tableau si elle est trouvée, sinon retourne -1
|
|
|
|
|
int rechTravaux(char *travauxName, Offre *tabTravaux)
|
|
|
|
|
int rechTravaux(char *travauxName, Offre **tabTravaux)
|
|
|
|
|
{
|
|
|
|
|
//On utilise la taille max de travaux car travaux est un tableau constant, sa taille max est égale à sa taille logique.
|
|
|
|
|
int deb=0, end=TMAXTRAV-1, mid;
|
|
|
|
@ -12,9 +12,9 @@ int rechTravaux(char *travauxName, Offre *tabTravaux)
|
|
|
|
|
while(deb<=end)
|
|
|
|
|
{
|
|
|
|
|
mid = (deb+end) /2;
|
|
|
|
|
if (strcmp(travauxName, tabTravaux[mid].travaux)==0)
|
|
|
|
|
if (strcmp(travauxName, tabTravaux[mid]->travaux)==0)
|
|
|
|
|
return mid;
|
|
|
|
|
if (strcmp(travauxName, tabTravaux[mid].travaux) < 0)
|
|
|
|
|
if (strcmp(travauxName, tabTravaux[mid]->travaux) < 0)
|
|
|
|
|
end=mid-1;
|
|
|
|
|
else
|
|
|
|
|
deb=mid+1;
|
|
|
|
@ -29,27 +29,42 @@ int rechTravaux(char *travauxName, Offre *tabTravaux)
|
|
|
|
|
void minTravaux(Offre *tabTravaux[])
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
ListeDevis l, minl;
|
|
|
|
|
for (i=0; i<TMAXTRAV; i++)
|
|
|
|
|
MaillonDevis *minDev, *md, *s;
|
|
|
|
|
for(i=0; i<TMAXTRAV; i++)
|
|
|
|
|
{
|
|
|
|
|
l=tabTravaux[i]->ldevis;
|
|
|
|
|
minl=l;
|
|
|
|
|
while(l)
|
|
|
|
|
md = tabTravaux[i]->ldevis;
|
|
|
|
|
minDev=md;
|
|
|
|
|
while(minDev->suiv != NULL)
|
|
|
|
|
{
|
|
|
|
|
if(l->dev.prix < minl->dev.prix)
|
|
|
|
|
if ((md->dev).prix < (minDev->dev).prix)
|
|
|
|
|
{
|
|
|
|
|
l=delete(minl);
|
|
|
|
|
minl=l;
|
|
|
|
|
s=minDev;
|
|
|
|
|
minDev=md;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
l=delete(l);
|
|
|
|
|
l=l->suiv;
|
|
|
|
|
else if ((md->dev).prix > (minDev->dev).prix)
|
|
|
|
|
s=md;
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if ((md->dev).capital < (minDev->dev).capital)
|
|
|
|
|
{
|
|
|
|
|
s=minDev;
|
|
|
|
|
minDev=md;
|
|
|
|
|
}
|
|
|
|
|
else // On met else et pas else if car on ne peut pas garder 2 égaux, il faut qd même en supprimer un
|
|
|
|
|
s=md;
|
|
|
|
|
}
|
|
|
|
|
displayOffre(tabTravaux[i]);
|
|
|
|
|
md=md->suiv;
|
|
|
|
|
del(s);
|
|
|
|
|
printf("HELLO3\n");
|
|
|
|
|
}
|
|
|
|
|
displayOffre(tabTravaux[i]);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*---------------tri------------------*/
|
|
|
|
|
|
|
|
|
|
//on la met dans struct.c ?
|
|
|
|
@ -141,13 +156,13 @@ void fusionMaillonDevis(ListeDevis R, int tlogR, ListeDevis S, int tlogS, ListeD
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Tri fusion sur une liste de devis
|
|
|
|
|
void triFusionListeDevis(ListeDevis *ldevis, int tlog)
|
|
|
|
|
void triFusionListeDevis(ListeDevis ldevis, int tlog)
|
|
|
|
|
{
|
|
|
|
|
ListeDevis p;
|
|
|
|
|
ListeDevis q;
|
|
|
|
|
ListeDevis qTemp;
|
|
|
|
|
|
|
|
|
|
p = *ldevis;
|
|
|
|
|
p = ldevis;
|
|
|
|
|
q = p->suiv;
|
|
|
|
|
if (tlog <= 1)
|
|
|
|
|
return;
|
|
|
|
@ -159,8 +174,8 @@ void triFusionListeDevis(ListeDevis *ldevis, int tlog)
|
|
|
|
|
qTemp = p->suiv;
|
|
|
|
|
p->suiv = NULL;
|
|
|
|
|
triFusionListeDevis(ldevis, tlog / 2);
|
|
|
|
|
triFusionListeDevis(&qTemp, tlog - tlog / 2);
|
|
|
|
|
triFusionListeDevis(qTemp, tlog - tlog / 2);
|
|
|
|
|
ListeDevis mergedList = NULL;
|
|
|
|
|
fusionMaillonDevis(*ldevis, tlog / 2, qTemp, tlog - tlog / 2, &mergedList);
|
|
|
|
|
*ldevis = mergedList;
|
|
|
|
|
fusionMaillonDevis(ldevis, tlog / 2, qTemp, tlog - tlog / 2, &mergedList);
|
|
|
|
|
ldevis = mergedList;
|
|
|
|
|
}
|
|
|
|
|