reajustement des fonction et tests

master
parent 791d7351ed
commit cf39c18e84

@ -1,10 +1,10 @@
Plomberie
Pros De Leau
Plomberie
Pros De Leau
12, Av. la république 63000 Clermont-Ferrand
500000
35
25000
Electricité
Electricite
Electro Maître
50, zone industrielle sud 15000 Aurillac
450000

@ -4,14 +4,14 @@
// Chargements
char *readAdress(FILE *flot);
Devis loadDevis(Offre *tabTravaux[]);
Devis loadDevis(Offre *tabTravaux[]);
Tache **loadTaches(Offre *tabTravaux[]);
Precedence *loadPrec(int *tmax, int *tlog);
// Recherches et tri
int rechTravaux(char *travauxName, Offre *tabTravaux[]);
int rechTravaux(char *travauxName, Offre *tabTravaux[]);
void minTravaux(Offre *tabTravaux[]);
void freeListeDevis(ListeDevis *ldevis);
void fusionDevisElements(ListeDevis *R, int *tlogR, ListeDevis *S, int *tlogS, ListeDevis *mergedList, ListeDevis *last, int *k);
@ -21,8 +21,8 @@ void triFusionListeDevis(ListeDevis *ldevis, int tlog);
// Foncctions de base
int lenListeDevis(ListeDevis l);
int nombrePred(char travaux[], Precedence prec[], int tlog);
int lenListeDevis(ListeDevis l);
int nombrePred(char travaux[], Precedence prec[], int tlog);
void displayDevis(Devis d);
void displayOffre(Offre *o);
void displayListeDevis(ListeDevis l);

@ -1,6 +1,9 @@
// on ne nous a pas donner de longueure pour la chaine de char de nomE
// il faudrait utiliser la meme methode que pour adresse
typedef struct
{
char nomE[32];
char *nomE;
char *adresse;
int capital;
int duree;

@ -2,63 +2,64 @@
/*---------------devis---------------*/
// Chargement de l'adresse depuis un fichier
char *readAdress(FILE *flot)
// Chargement d'un devis depuis un fichier
char *readFromFile(FILE *file)
{
char *adresse, *s, aux[5];
int i=0, tmax=5;
adresse = (char *)malloc(sizeof(char)*tmax);
fgets(adresse, 5, flot);
char *str;
char *buf;
int len = 0;
int size = 5;
int add = 5;
while (adresse[i]!='\n')
{
if (i==tmax - 1)
{
tmax+=5;
s = (char *)realloc(adresse, tmax*sizeof(char));
if (s==NULL)
{
printf("\033[0;31mErreur: \033[0mreallocation pour str adresse\n");
exit(1);
}
adresse=s;
fgets(aux, 5, flot);
strcat(adresse, aux);
}
i++;
}
adresse[strlen(adresse)-1]='\0';
return adresse;
str = malloc(size);
if (!str)
exit(1);
while (str[len] != '\n')
{
len = strlen(str);
if (len >= size - 1)
{
size += add;
buf = realloc(str, size);
if (!buf)
{
free(str);
exit(1);
}
str = buf;
}
fgets(str + len, size - len, file);
len = strlen(str) - 1;
}
str[len] = '\0';
return (str);
}
// Chargement d'un devis depuis un fichier
Devis loadDevis(Offre *tabTravaux[])
Devis loadDevis(Offre *tabTravaux[])
{
Devis d;
FILE *devisFile;
devisFile=fopen("files/devis.txt","r");
if (devisFile == NULL)
{
printf("\033[0;31mErreur: \033[0mOuverture de devis.txt\n");
exit(1);
}
char travaux[16];
char *travaux;
int index;
fscanf(devisFile ,"%s", travaux);
Devis d;
FILE *devisFile;
devisFile = fopen("files/devis.txt", "r");
if (!devisFile)
exit(1);
travaux = readFromFile(devisFile);
index = rechTravaux(travaux, tabTravaux);
if (index==-1)
{
printf("\033[0;31mErreur: \033[0mCes travaux ne sont pas prévus !\n");
exit(1);
}
fgets(d.nomE, 32, devisFile);
d.nomE[strlen(d.nomE)-1] = '\0';
d.adresse = readAdress(devisFile);
if (index == -1)
exit (1);
d.nomE = readFromFile(devisFile);
d.adresse = readFromFile(devisFile);
fscanf(devisFile, "%d\n%d\n%d", &d.capital, &d.duree, &d.prix);
fclose(devisFile);
return d;
}
fclose(devisFile);
return d;
}
// Chargement des tâches depuis un fichier pour chaque offre
Tache **loadTaches(Offre *tabTravaux[])

@ -1,22 +1,28 @@
#include "../includes/main.h"
int main(void)
{
Offre offre1 = {"Travaux1", NULL};
offre1.ldevis = (ListeDevis)malloc(sizeof(struct maillonDevis));
offre1.ldevis->dev = (Devis){"Devis6", "Adresse1", 100, 5, 50};
offre1.ldevis->suiv = (ListeDevis)malloc(sizeof(struct maillonDevis));
offre1.ldevis->suiv->dev = (Devis){"Devis3", "Adresse3", 80, 3, 150};
offre1.ldevis->suiv->suiv = (ListeDevis)malloc(sizeof(struct maillonDevis));
offre1.ldevis->suiv->suiv->dev = (Devis){"Devis8", "Adresse2", 120, 7, 10};
offre1.ldevis->suiv->suiv->suiv = (ListeDevis)malloc(sizeof(struct maillonDevis));
offre1.ldevis->suiv->suiv->suiv->dev = (Devis){"Devis5", "Adresse5", 90, 4, 60};
offre1.ldevis->suiv->suiv->suiv->suiv = (ListeDevis)malloc(sizeof(struct maillonDevis));
offre1.ldevis->suiv->suiv->suiv->suiv->dev = (Devis){"Devis2", "Adresse2", 110, 6, 15};
offre1.ldevis->suiv->suiv->suiv->suiv->suiv = NULL;
printf("Avant le tri : \n");
displayOffre(&offre1);
return (0);
}
// on doit absolument a voir les bons travaux et les ranger
// sinon la recherche par dichotomie avec une valeur precise est fausse
int main() {
Devis devis;
Offre offre1 = newOffre("Electricite");
Offre offre2 = newOffre("Finitions");
Offre offre3 = newOffre("Fondation");
Offre offre4 = newOffre("Murs");
Offre offre5 = newOffre("Peinture");
Offre offre6 = newOffre("Plomberie");
Offre offre7 = newOffre("Sols");
Offre offre8 = newOffre("Structure");
Offre* tabTravaux[tmaxTravaux] = {&offre1, &offre2, &offre3, &offre4, &offre5, &offre6, &offre7, &offre8};
devis = loadDevis(tabTravaux);
printf("Devis chargé avec succès :\n");
displayDevis(devis);
return 0;
}

@ -8,12 +8,6 @@ ListeDevis newListeDevis(void)
return NULL;
}
// Initialise une liste de travaux
Liste newListe(void)
{
return NULL;
}
// Initialise une nouvelle offre
Offre newOffre(char *travauxName)
{
@ -23,6 +17,12 @@ Offre newOffre(char *travauxName)
return o;
}
// Initialise une liste (pour les successeurs)
Liste newListe(void)
{
return NULL;
}
/*------------verifications------------*/
// Verifie l'integrite d'une liste de devis
@ -39,7 +39,7 @@ Booleen emptyOffre(Offre *o)
/*-------------insertions---------------*/
// Insere un devis dans la liste de devis
// Insere un devis en tete de la liste des devis
ListeDevis insert(ListeDevis l, Devis d)
{
MaillonDevis *md;
@ -54,7 +54,8 @@ ListeDevis insert(ListeDevis l, Devis d)
return md;
}
// Insere une liste dans le tableau de travaux
// Insere en queue de liste (les successeurs)
Liste insertSucc(Liste l, char travaux[])
{
MaillonSucc *ms;

@ -1,5 +1,6 @@
#include "../includes/main.h"
//test tri fusion
int main(void)
{

Loading…
Cancel
Save