recherche d'un travaux et avance sur fcts des structs

master
Louis GERMAIN 1 year ago
parent e0cd45f79c
commit ba891a55bb

@ -5,8 +5,9 @@ typedef struct
{
char nomE[32];
char *adresse;
int prix;
int capital;
int duree;
int prix;
} Devis;
typedef struct maillonDevis
@ -28,7 +29,7 @@ typedef enum {
//Devis
void displayDevis(Devis d);
void readDevis(Devis d, Offre *tabTravaux[]);
Devis readDevis(char *filename, Offre *tabTravaux[]);
//ListeDevis
@ -43,5 +44,5 @@ void displayListeDevis(ListeDevis l);
//Offre
Offre newOffre(void);
Offre emptyOffre(Offre o);
Booleen emptyOffre(Offre o);
void displayOffre(Offre o);

@ -102,7 +102,7 @@ void triFusionListeDevis(ListeDevis *ldevis) {
ca rend le code plus complexe
Pour une derniere version, il faudra la virer et la remplacer par une variable comme dans les versions precedentes du code
*/
while (q && q->suiv)
while (q && q->suiv) // while q-suiv fonctionnerai car q existe forcément si q-suiv aussi ?
{
p = p->suiv;
q = q->suiv->suiv;
@ -114,24 +114,6 @@ void triFusionListeDevis(ListeDevis *ldevis) {
fusionMaillonDevis(*ldevis, q, ldevis);
}
/*------------------------affichage-----------------------------------*/
void afficherListeDevis(ListeDevis ldevis)
{
while (ldevis)
{
printf("%s, ", ldevis->dev.nomE);
ldevis = ldevis->suiv;
}
printf("\n");
}
void afficherOffre(Offre *offre)
{
printf("Travaux: %s\n\t", offre->travaux);
afficherListeDevis(offre->ldevis);
}
/*---------------------------------------------------------------------*/
/*
int main(void)

@ -0,0 +1,6 @@
#include "../includes/main.h"
int main(void)
{
}

@ -2,11 +2,18 @@
#include "../includes/recherche.h"
#include "../includes/main.h"
int rechTravaux(char travauxName[], Offre *tabTravaux[])
int rechTravaux(char *travauxName, Offre *tabTravaux[], int tlog)
{
int i;
for (i=0; i<tmaxTravaux; i++)
if (strcmp(tabTravaux[i]->travaux, travauxName) == 0)
return i;
int deb=0, end=tmaxTravaux-1, mid; //On utilise la taille max de travaux car travaux est un tableau constant, sa taille max est égale à sa taille logique.
while(deb<=end)
{
mid = deb+end /2;
if (strcmp(travauxName, tabTravaux[mid]->travaux)==0)
return mid;
if (strcmp(travauxName, tabTravaux[mid]->travaux) < 0)
end=mid-1;
else
deb=mid+1;
}
return -1;
}

@ -5,12 +5,15 @@
void displayDevis(Devis d)
{
printf("%s\t%s\t%d\t%d\n", d.nomE, d.adresse, d.prix, d.duree);
printf("%s\t%s\t%d\t%d\t%d\n", d.nomE, d.adresse, d.capital, d.duree, d.prix);
}
void readDevis(Devis d, Offre *tabTravaux[])
Devis readDevis(Offre *tabTravaux[]) // A finir
{
Devis d;
FILE *devisFile;
devisFile = fopen("devis.txt", "r");
char travaux[16];
int index;
scanf("%s", travaux);
@ -20,67 +23,104 @@ void readDevis(Devis d, Offre *tabTravaux[])
printf("Ces travaux ne sont pas prévus !");
return;
}
fgets(d.nomE, 32, devisFile);
d.nomE[strlen(d.nomE)-1] = '\0';
//Trouver comment avoir la longueur de l'adresse puis la mettre dans le devis !
fscanf("%d\n%d\n%d", d.capital, d.duree, d.prix);
return d;
}
//ListeDevis
ListeDevis newListeDevis(void)
{
return NULL;
}
ListeDevis defiler(ListeDevis l)
ListeDevis delete(ListeDevis l)
{
MaillonDevis *md;
if (l==NULL)
{
printf("Erreur: suppression dans une liste vide");
exit(1);
}
md=l;
l=l->suiv;
free(md);
return l;
}
ListeDevis enfiler(ListeDevis l)
ListeDevis insert(ListeDevis l, Devis d)
{
MaillonDevis *md;
md = (MaillonDevis *)malloc(sizeof(MaillonDevis));
if (md == NULL)
{
printf("Erreur allocation mémoire");
exit(1);
}
md->dev=d;
md->suiv=l;
return md;
}
ListeDevis sortListeDevis(ListeDevis l)
{
//Tri fusion.
}
Booleen emptyListe(ListeDevis l)
{
return l==NULL;
}
int lenListeDevis(ListeDevis l)
{
int len=0;
while (l)
{
len++;
l=l->suiv;
}
return len;
}
void displayListeDevis(ListeDevis l)
{
while(l)
{
displayDevis(l->dev);
l=l->suiv;
}
}
//Offre
Offre newOffre(void)
Offre newOffre(char *travauxName)
{
Offre o;
o.travaux=travauxName;
o.ldevis=newListeDevis();
return o;
}
Offre emptyOffre(Offre o)
Booleen emptyOffre(Offre o)
{
return emptyListe(o.ldevis);
}
void displayOffre(Offre o)
{
printf("Travaux: %s", o.travaux);
displayListeDevis(o.ldevis);
}
Loading…
Cancel
Save