diff --git a/includes/structures.h b/includes/structures.h index e56352a..dbb114f 100644 --- a/includes/structures.h +++ b/includes/structures.h @@ -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); \ No newline at end of file diff --git a/srcs/atomes.c b/srcs/atomes.c index f35434c..59e3cb1 100644 --- a/srcs/atomes.c +++ b/srcs/atomes.c @@ -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) diff --git a/srcs/main.c b/srcs/main.c index e69de29..85196be 100644 --- a/srcs/main.c +++ b/srcs/main.c @@ -0,0 +1,6 @@ +#include "../includes/main.h" + +int main(void) +{ + +} \ No newline at end of file diff --git a/srcs/recherche.c b/srcs/recherche.c index 9921967..9d9109a 100644 --- a/srcs/recherche.c +++ b/srcs/recherche.c @@ -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; itravaux, 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; } \ No newline at end of file diff --git a/srcs/structures.c b/srcs/structures.c index 770c6f3..1e6e8f1 100644 --- a/srcs/structures.c +++ b/srcs/structures.c @@ -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); } \ No newline at end of file