From 9fc5959924c87543e5f934d8001adfa20d3a4201 Mon Sep 17 00:00:00 2001 From: "thibaud.la_riviere-gillet" Date: Wed, 10 Jan 2024 10:09:43 +0100 Subject: [PATCH] je suis un bg de fou --- SAE2 | Bin 22696 -> 35624 bytes files/devis.txt | 3 ++ includes/charge.h | 11 +++--- includes/structures.h | 3 -- obj/charge.o | Bin 7176 -> 4728 bytes obj/main.o | Bin 1656 -> 808 bytes obj/sort.o | Bin 4944 -> 3536 bytes obj/structures.o | Bin 8144 -> 5104 bytes srcs/charge.c | 52 ++++++++++---------------- srcs/main.c | 3 +- srcs/sort.c | 84 ++++++++++++++++++++---------------------- srcs/structures.c | 64 +++++++++++++------------------- 12 files changed, 95 insertions(+), 125 deletions(-) diff --git a/SAE2 b/SAE2 index 072c67939d0363e59e9d362027b29582c7065769..2bb40e73471ee278ffc513a4bc741aba319cd956 100755 GIT binary patch literal 35624 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 literal 22696 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 e{fvY^&5A#+mwD+nIG6lV~I*sef6GS7Bk28 zp6xEBL$a3r!9@Rv1)4xb)SV__Pm?x;5HXrWrXW-#1OqBGp-H$1gu@R}(4;wt5We&7 zxvt~5f!+4{yWctY$2sSodwrc>{OfQ3xlag}K%tLasLRywqM{r`9e1=2-S$z@r06~F zqj(#{RNXwnFw)jSnhC%#LR05Lce!d^-7Q-*UkjQm9`q&AE|Dcr#W2iN+K$GbVL{`3 zYMyIsSA^|U<7w{tg835j$*`F=GV$l5@rYprC+qb-9>1c5u#0?K-XjE?yk*Kqp*w&o zm){F#P*JE8$txH)3cR^bh_}$G1MO*4D!p83-ovO}s2{a#E{b1nTyYgQCPYqX*w%P;mADwsi<0jjo=2!Mm zp8{;Iw@bL%ze@A2VQm-Ie05RUq{eEyu*b0N=bM|oHD55M-z82`pN%UMMZ`?TZlVRT z(~2AJ7AJN$uvWe{UtcxvzEHh^F;47O`<4r<7nZeF;invGjGY=+!Q6=Zdif!-UX#I( z@=?h(?r~u^;Zc`_bqd#lH+at)~g( z1pHTfM)KQqPN4e`G5=rrsn)0dPM+Q`O0{#^U`J(#bNVCf2ifK9$r0G}gX@P1ZG5hG zfAn)tb{DYs6mu71{$h)qL&<0#H0*=cgWN-3Uymr2O_94jBkvFAZ1H%3zLYn=M~;%8 z&OLGv=W-`K?gi@CKZJ8d_+4?5a1HT&9X9zc56g2PbFixb|KFi_L%%hr=|0$noOac6 zx<2NrUBCbN#lC7`@j~rh*eUMhgXYSXUT#BtzTAF|{3~}mxw}7)If$zqIm7!wIjXq= zr6R@-0iC-7IplN8{UW)K?0cc^q3?rLC*j1Lb!a^KD$2#QBr=%l%&%d;GY6 ze#*A3jQuGu==^**7E74kbol9*70wWb?C_;*h#h{yRqIBbg9Xv|7I60t5t zQ=@6TLTup~9>G6v@X1q?p;HrQre?g3z$5-2Tg^FZ=Z;Q?x+SL1PEDuI$sKRR@*Zs*akQxww&ldu36?jR$k^W5s5uw4Y;XN|j~Gl1 zrjVsv?ntEP-kXJF!Fz^FlH}rQT>bHPLACG}-p@gt4?=wai1%91D^Y&{NaGIx_d&j2qW%^l`EkgXfJ4AE@DMNv#G7yA z1d!H02Bh&mU?;{8NYwHD?%4eY#E<&D52SwY0rAod-jb*<1IfPv>t6%n=^4yR)E9tw zkB*!NlK;~{nr{r~_y=_Slc)~>@m39bCF%!&c(0E96?rfS{4sC) zzrdIVI`IV_gM5bC-X2$%;x47>=We&eh^03<(eAzggHcY*C# z|7Q~Q6_&pZ#JwC`mZ-nM@&d38^4BEl-(WdCgpoqQC5ie=EYAY5mBAMz>PeQzfY_Sg zoJ9RR%g+H3s$fW>eum|fK)4RxxX?+(qfy%3_-^2W6=7*WneL?;EnSY-7IP*#7Vdj43FEa0A{!Qi` z%)iIH3L9wtKQaF!^9MDuPKZVBuj2Pb;@DvIJCT0vbwZ}fapvm2e1*BXAL$30(;rDi z<cX^Hk4;VO!=LKO%%d?}kwAQ9(R~FH&Jx3sHQ|K4Ya*!iXip zkx6;w-^Ud@n~%+ll$pc#NQ{ZBa)&UTkaHwj#oiPa^We`Tmw;p)%1* zrDrmx$)=6^PpVd};U8C`TEqXC64e_1PbyKZ;s1mZ)f)a2N>pq3k1G)x>G|ZNiu!9U UG@$U;6n9&WVyvd18%>D+0_Rfa)Bpeg literal 7176 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 Bm=^#5 diff --git a/obj/sort.o b/obj/sort.o index d5e41741cbbc5a23383cd6a0dd195b3624117b3c..c17d8256c99ad53d77a37373611fedf78eb8369b 100644 GIT binary patch literal 3536 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 KMNKhr>i+}DjfS=W diff --git a/obj/structures.o b/obj/structures.o index 25aeab34bf606d2aeeedcc2a4c60026fbb8263ab..4e4a9824219ae64ded6b6e9da2450d5ce430c412 100644 GIT binary patch literal 5104 zcmbVQUu;{|89&ag8#|#*i?X$Jp}pOjH84^&{26VjCvQ!qZZZ(jJX9m$#@IK_RsC=G z+9g@XWGzTUu!lxt5(A{V(;n<-n)XI4RVWZN@=yurq=|<~I0#J+FbSkiil+th`|kOU zbM3@J=UXD^Iy(rPwGMi}I;16VASL1#V0RDj_?<#5L5a#Zf``T~e#r0Lcu<0GF!HySG~*xjS@HhH6<=xNjF_)< zikk4}Z^7A16;0GCTDZ2_8LqvhNgna5;EBCbwsGahCD_lCA0gP^8Sy^(slqPc6JJ#K zT|0n9-dTtL?c$N1*oz0gz5eRUlvhV-1O8W$OJVlV`f9f)KW~iAYX_=AJd85+!p~Ja z^W;w#`6me1kTb>6eM=$X%ZGG7(4P+#XN~nW@CRr;z>OqPem! z`eeP_`uk-4-ML@RDL1MeJ+yxGSnt>AQoJH`X&<(%h5Mr3Das^w^Wpv&*vzFI@Qc03 zz3j>KQ*PHo+xeX9*k*m2Sg307t%b|jk8;2lyi|SX+JPeX4)G~=BR`J+ z3CC~OpQ=AT>JjC7H=a!&<+UD;^E!HzbE4W%t=2m8s93PqHjj_Z9s@$ zRI$e^Dz9$%pt`^}<;M9nYV|M54?0b~qxtauXr&GGGv#+(JGB1C<%5f~pVUirE77TsDP$2m>bjdCn%ct3hJbMzrcvRC=d@xCE;tyR~%9*WnPYjTALlXVv^R%*;^cL0oP51hSngXaE{`o@UxvJW=Z*6-S|jvJ%dag4 zW~_Bpm%=P;XU7)ddoS%p;Mwr+#76kqWG4l)@{B+{{H)=H=JyQwro?kQjTf6tVg33v$YX{U%prOe@+Z$$kfkG!N_1!>rt%WE$aORwjprn6k^hP1H`~ZFyy6JSx5@7Y%iH-6^98=p#(#z7 zi*4jDbH?#D^8c|s+(v%dF9j2APBr1cghj{gcs>%n&@{azW=f&IWfAU=`(5<{P%g2b-^@risaF*F7I7WgNCwC;86 z`(417fkc0fKB7EFfNotGPcsex4?uo|=|09ijP!f&Fy!w6DgI3$Tt`+UhOPp2@Z-S4 zz%d}{T>!#GWK?441n>y>RqXv?UU0b8bB3hlpx0zPwF8%5z zc>ze{F}Bx%G|uB8xjH95WLlkzXIWpJbJRDaKLVsNjE877Xs?Loa)=?O)j2u~MUT2T z2*OKSE%H}d=x?{s)Tdti{Vo1NEp)L(pKQJMP78gdg%*Zw#->K)Z9o|E-XaWh+R6%J z@}ik_gb}x#Od>kte$h9m2;Enhl`^04k_j{AArrXI>u>k?v^_(KMEEHguVVc@=z%1$D)WF|Y~x)+9uD~#ymq!pVoZ8xE_jr)l( z5a7}1^keCym+AU=d~(t@8_Qt|9(e{Kq?Ch7?P4x!#}PE0eA+fgY!h>NcS95>dmcA8 uRX=ww*M01y;K>O!d00(;s3s4o$%AV0fJkJMnfn!q3CJNuVgizmHt`kMX>=O^ literal 8144 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 MY*DFJ_|nJ!7YppQn*aa+ diff --git a/srcs/charge.c b/srcs/charge.c index fd94ab6..da4c91c 100644 --- a/srcs/charge.c +++ b/srcs/charge.c @@ -5,7 +5,6 @@ // initialisation des travaux Offre **initTabTravaux(void) { - printf("\n*-*-* INITTABTRAVAUX *-*-*\n"); Offre **tabTravaux; tabTravaux = (Offre **)malloc(TMAXTRAV* sizeof(Offre *)); @@ -33,68 +32,57 @@ Offre **initTabTravaux(void) // Chargement d'une chaine de caracteres depuis un fichier char *readFromFile(FILE *file) { - printf("\n*-*-* READFROMFILE *-*-*\n"); - char *str, *buf, s[6]; - int i=0, tmax = 5; - str = (char *)malloc(tmax*sizeof(char)); - if (str == NULL) - { - printf("\033[0;31mErreur: \033[0mmalloc readFromFile"); + char *str; + char *buf; + int len = 0; + int size = 5; + int add = 5; + + str = (char *)malloc(size * sizeof(char)); + if (!str) exit(1); - } - fgets(str, tmax, file); - while(str[strlen(str)-1]!='\n') + + while (str[len] != '\n') { - if (i==tmax) + len = strlen(str); + if (len >= size - 1) { - tmax+=5; - buf=realloc(str, tmax*sizeof(char)); - if (buf==NULL) + size += add; + buf = realloc(str, size); + if (!buf) { - printf("\033[0;31mErreur: \033[0mrealloc readFromFile"); free(str); exit(1); } - fgets(s, 5, file); - strcat(str, s); + str = buf; } - i++; + fgets(str + len, size - len, file); + len = strlen(str) - 1; } - str[strlen(str)-1] = '\0'; - return str; + str[len] = '\0'; + return (str); } // Chargement d'un devis depuis un fichier void loadDevis(FILE *devisFile, Offre **tabTravaux) { - printf("\n*-*-* LOADDEVIS *-*-*\n"); int index; char *travaux; Devis d; - MaillonDevis *nouveauMaillon; travaux = readFromFile(devisFile); index = rechTravaux(travaux, tabTravaux); if (index == -1) exit(1); - - nouveauMaillon = (MaillonDevis *)malloc(sizeof(MaillonDevis)); - if (!nouveauMaillon) - { - printf("\033[0;31mErreur: \033[0mallocation mémoire pour nouveauMaillon\n"); - exit(1); - } d.nomE = readFromFile(devisFile); d.adresse = readFromFile(devisFile); fscanf(devisFile, "%d\n%d\n%d%*c", &d.capital, &d.duree, &d.prix); - nouveauMaillon->dev = d; tabTravaux[index]->ldevis = insert(tabTravaux[index]->ldevis, d); } // Chagement des offres depuis le fichier devis.txt Offre **loadOffre(void) { - printf("\n*-*-* LOADOFFRE *-*-*\n"); Offre **tabTravaux = initTabTravaux(); FILE *devisFile; diff --git a/srcs/main.c b/srcs/main.c index c9bfbaa..cf899f3 100644 --- a/srcs/main.c +++ b/srcs/main.c @@ -7,8 +7,7 @@ int main() tabTravaux = loadOffre(); for (int i = 0; i < TMAXTRAV; i++) { - displayOffre(tabTravaux[i]); - printf("\n"); + triFusionListeDevis(&tabTravaux[i]->ldevis, lenListeDevis(tabTravaux[i]->ldevis)); } minTravaux(tabTravaux); diff --git a/srcs/sort.c b/srcs/sort.c index 6ab1077..e387327 100644 --- a/srcs/sort.c +++ b/srcs/sort.c @@ -6,7 +6,6 @@ // Retourne l'indice de l'offre dans le tableau si elle est trouvée, sinon retourne -1 int rechTravaux(char *travauxName, Offre **tabTravaux) { - printf("\n*-*-* RECHTRAVAUX *-*-*\n"); //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; @@ -29,39 +28,39 @@ int rechTravaux(char *travauxName, Offre **tabTravaux) // Affiche chaque offre gardee avec le devis ayant le prix le plus bas void minTravaux(Offre *tabTravaux[]) { - printf("\n*-*-* MINTRAVAUX *-*-*\n"); - int i; - MaillonDevis *minDev, *md, *s; - for(i=0; ildevis; - minDev=md; - while(minDev->suiv != NULL) - { - if ((md->dev).prix < (minDev->dev).prix) - { - s=minDev; - minDev=md; - } - 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; - } - md=md->suiv; - del(s); - displayOffre(tabTravaux[i]); - } - displayOffre(tabTravaux[i]); - - } + int i; + MaillonDevis *minDev, *md, *s; + for (i = 0; i < TMAXTRAV; i++) + { + md = NULL; + s = NULL; + minDev = tabTravaux[i]->ldevis; + if (!md && minDev->suiv) + md = minDev->suiv; + while (md) + { + if ((md->dev).prix < (minDev->dev).prix || (((md->dev).prix == (minDev->dev).prix) && ((md->dev).capital > (minDev->dev).capital))) + { + s = minDev; + minDev = md; + md = md->suiv; + } + else if ((md->dev).prix == (minDev->dev).prix && ((md->dev).capital == (minDev->dev).capital)) + { + printf("deux offres minimales !!!\n"); + exit (1); + } + else + { + s = md; + md = md->suiv; + } + del(s); + } + minDev->suiv = NULL; + tabTravaux[i]->ldevis = minDev; + displayOffre(tabTravaux[i]); + } } @@ -73,7 +72,6 @@ void minTravaux(Offre *tabTravaux[]) // Libère la mémoire d'une liste de devis void freeListeDevis(ListeDevis *ldevis) { - printf("\n*-*-* FREELISTEDEVIS *-*-*\n"); ListeDevis current = *ldevis; ListeDevis next; @@ -89,7 +87,6 @@ void freeListeDevis(ListeDevis *ldevis) // Boucle principale de fusion de listes de devis void fusionDevisElements(ListeDevis *R, int *tlogR, ListeDevis *S, int *tlogS, ListeDevis *mergedList, ListeDevis *last, int *k) { - printf("\n*-*-* FUSIONDEVISELEMENTS *-*-*\n"); ListeDevis *current; while (*tlogR > 0 && *tlogS > 0) @@ -124,7 +121,6 @@ void fusionDevisElements(ListeDevis *R, int *tlogR, ListeDevis *S, int *tlogS, L // Gère les éléments restants après les itérations principales de fusion void gestionElementsRestants(ListeDevis *mergedList, ListeDevis *last, ListeDevis *source, int *tlogSource, int *k) { - printf("\n*-*-* GESTIONELEMENTSRESTANTS *-*-*\n"); while (*tlogSource > 0) { if (!*mergedList) @@ -145,7 +141,6 @@ void gestionElementsRestants(ListeDevis *mergedList, ListeDevis *last, ListeDevi // Fusionne deux listes de devis triées en une seule liste triée void fusionMaillonDevis(ListeDevis R, int tlogR, ListeDevis S, int tlogS, ListeDevis *T) { - printf("\n*-*-* FUSIONMAILLONDEVIS *-*-*\n"); ListeDevis last; ListeDevis mergedList; int k; @@ -161,14 +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) { - printf("\n*-*-* TRIFUSIONLISTEDEVIS *-*-*\n"); ListeDevis p; ListeDevis q; ListeDevis qTemp; - p = ldevis; + p = *ldevis; q = p->suiv; if (tlog <= 1) return; @@ -180,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; +} \ No newline at end of file diff --git a/srcs/structures.c b/srcs/structures.c index 36ec87b..2dd74ca 100644 --- a/srcs/structures.c +++ b/srcs/structures.c @@ -5,14 +5,12 @@ // Initialise une liste de devis ListeDevis newListeDevis(void) { - printf("\n*-*-* NEWLISTEDEVIS *-*-*\n"); return NULL; } // Initialise une nouvelle offre Offre *newOffre(char *travauxName) { - printf("\n*-*-* NEWOFFRE *-*-*\n"); Offre *o; o = (Offre *)malloc(sizeof(Offre)); strcpy(o->travaux, travauxName); @@ -23,7 +21,6 @@ Offre *newOffre(char *travauxName) // Initialise une liste (pour les successeurs) Liste newListe(void) { - printf("\n*-*-* NEWLISTE *-*-*\n"); return NULL; } @@ -32,14 +29,12 @@ Liste newListe(void) // Verifie l'integrite d'une liste de devis Booleen emptyListe(ListeDevis l) { - printf("\n*-*-* EMPTYLISTE *-*-*\n"); return l==NULL; } // Vérifie l'intégrité de l'offre Booleen emptyOffre(Offre *o) { - printf("\n*-*-* EMPTYOFFRE *-*-*\n"); return emptyListe(o->ldevis); } @@ -48,7 +43,6 @@ Booleen emptyOffre(Offre *o) // Insere un devis en tete de la liste des devis ListeDevis insert(ListeDevis l, Devis d) { - printf("\n*-*-* INSERT *-*-*\n"); MaillonDevis *md; md = (MaillonDevis *)malloc(sizeof(MaillonDevis)); if (md == NULL) @@ -65,7 +59,6 @@ ListeDevis insert(ListeDevis l, Devis d) Liste insertSucc(Liste l, char travaux[]) { - printf("\n*-*-* INSERTSUCC *-*-*\n"); MaillonSucc *ms; ms = (MaillonSucc *)malloc(sizeof(MaillonSucc)); if (ms == NULL) @@ -84,35 +77,37 @@ Liste insertSucc(Liste l, char travaux[]) // Supprime le premier maillon de la liste de devis ListeDevis del(ListeDevis l) { - printf("\n*-*-* DEL *-*-*\n"); - MaillonDevis *md; - if (l==NULL) - { - printf("\033[0;31mErreur: \033[0msuppression dans une liste vide\n"); - exit(1); - } - if (l->suiv==NULL) - return newListeDevis(); - md=l; - l=l->suiv; - free(md->dev.nomE); - free(md->dev.adresse); - free(md); - md=NULL; - printf("\n\nADRESSE md %s\n", md->dev.adresse); - printf("\n\nNOM md %s\n", md->dev.nomE); - printf("\n\nADRESSE l %s\n", l->dev.adresse); - printf("\n\nNOM l %s\n", l->dev.nomE); - - return l; + MaillonDevis *md; + if (l == NULL) + { + printf("\033[0;31mErreur: \033[0msuppression dans une liste vide\n"); + exit(1); + } + + md = l; + l = l->suiv; + + if (md->suiv == NULL) + { + free(md->dev.nomE); + free(md->dev.adresse); + free(md); + return newListeDevis(); + } + + free(md->dev.nomE); + free(md->dev.adresse); + free(md); + return l; } + + /*---------------calculs----------------*/ // Calcule la longueur de la liste de devis int lenListeDevis(ListeDevis l) { - printf("\n*-*-* LENLISTEDEVIS *-*-*\n"); int len=0; while (l) { @@ -124,7 +119,6 @@ int lenListeDevis(ListeDevis l) int lenMaxNomEntreprise(ListeDevis ldevis) { - printf("\n*-*-* LENMAXNOMENTREPRISE *-*-*\n"); int maxLen; int len; @@ -142,7 +136,6 @@ int lenMaxNomEntreprise(ListeDevis ldevis) // Calcule le nombre de precedences pour un travail donne int nombrePred(char travaux[], Precedence prec[], int tlog) { - printf("\n*-*-* NOMBREPRED *-*-*\n"); int nbPred = 0, i; for (i=0; itravaux); + printf("\n%s\n", o->travaux); displayListeDevis(o->ldevis); } // Affiche les details de la liste de devis void displayListeDevis(ListeDevis l) { - printf("\n*-*-* DISPLAYLISTEDEVIS *-*-*\n"); while(l != NULL) { displayDevis(l->dev); @@ -195,7 +184,6 @@ void displayListeDevis(ListeDevis l) // Fonction pour afficher le devis d'une entreprise donnée pour un type de travaux donné void afficherDevisEntreprise(Offre **tabTravaux) { - printf("\n*-*-* AFFICHERDEVISENTREPRISE *-*-*\n"); int indiceTravaux; int maxlen; char typeTravaux[30];