From c9d3e9fd3fec3394595fb8579d089951fe0b8fb3 Mon Sep 17 00:00:00 2001 From: "thibaud.la_riviere-gillet" Date: Fri, 12 Jan 2024 18:46:26 +0100 Subject: [PATCH] rectification de la structure --- SAE2 | Bin 36200 -> 36152 bytes includes/charge.h | 10 +++--- includes/main.h | 7 +--- includes/structures.h | 13 ++++--- obj/structures.o | Bin 9040 -> 8760 bytes srcs/part4.c | 33 ++++++++--------- srcs/structures.c | 81 ++++++++++++++++++------------------------ 7 files changed, 62 insertions(+), 82 deletions(-) diff --git a/SAE2 b/SAE2 index 378a5f3a5164fb05eac96946a5211d9630fb58c5..1e94dd1a94ee58dd0b3717ea883f47800a61c64d 100755 GIT binary patch delta 3697 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 delta 3924 zcmZ8k4^&iD8vpKl4*`XQWCa<72l8it;g7(G;vZ)6&uWpPQQBEe2YATXFwo3kxY^FQ za#ku*o|hK4EUD}SE)_QI3frHx)!HmQi{vK9rItJ%8%}@JbIh0)V!u1@V#GW1?z_L= z_q*Ty?)Sa>-kY9h1>dtmOW&QlV*v;NjK*Vw$L?75^0LT=MH<_ok_a&5godDI zIzTJkmKY`Z#>b;++1y08;OT#gMT(R8W|;iLI6zOZkJp4C2n-G(CODq*N+7K5hsIl*kWF>w{{8T8-Uk zx?7GQPtd1jo77`a@1kS!a`K?poVc2VTrsF$1VL*tRg;Rz_w;;H4tbxFd5@A$=&pHn zl9Z)(&~N8$lRR1K0lGffBz0w}o9Q#jE2N<;)kZ&0PA*8!R!!)Fg*GgL%EH18(+!)l z)yM^Q}ZGLt?gpmNWhbntBzAORY!*D zYpILLH9DMXkeYJU&*_}BlCYTh>KTctH;=qWA4y9iN9do@^bz_zwFT*b16Q8<20fp) zSsKVw+vt3KGVM&$k$p(%ihi*bXL)+3<2DOyIqb7-8JceD^@*X!SVl51Bl;kom7_FU zKb!dIO1&&Z6wvMZ40lO^x(VlGx7@Ocxh13eyV3DBmQ;M8Y6&ecs=Fq*33r=~s%wG^ z<+?_rT06mobMBB)-7&#Ma_$|YsvwsVnB-TSykbCZjYq>(8Xw`(c)okOo?mlTVIPd(Jwtn!cA) z6&CVyn7uS2H;Po!mATdAEPXxq8X5JzFn=Q{<|B;&eS= ztyG`~MK`NZ7y5P8gLKj>@^Vwx+?#6E#p~U@jVr~leS{l~Y)=bK~AI06PP~3VyHlB^Fc@UfS zhi<3#6;aE~F_9${-Vk}I-V!nB_<^&?`D!fk6L* zLs}i^{u?ufX0^l9QUe^6L};u)Y=Jh(YM)s8OGu9vp!T|vXm#yH=CF~iiA@IYNm^W= zAbrw=wDKtQNwqcQ4g~|Pgv-dE-2fXgs}|u^#in&7 z7Tr>zz>y&9sz8AzmF#FxZT(KZNa&=4dlTkCbcMxMQIB`%ih8VXsiSs>;)1+Nc#q*lv);xd<5;a`LaUX6| zl))B`NAMGq;c|`#=V`c(;|_dYF#BGPOF33G?1nHt;VTn@IBmdjj+;1sm*aMwX8(}m zcewpu9J}&0`+qt1aeR~GF5DU{ApAJQ1-b!R@K#_%Vt~NUaJ`1-a~#1ZT*L7opKv|L z)jR`RI4()h#@jgV=6DasxjaLM7-*Lgj-=Hy$4|97kK7EUNDfsazc;6KK%oP0G6#ViO z+$m_axjkX`6u}94V_%N>+!Pj{lfMY_iz)c(6r4d-&g#B=e^o=LkQ}V1qh>NDb*c6s-*$Qedd*U@O_Z3yv}1Ejk1S_U+y*TUs}>1 z*?6Jzz_B~>zlxu}NBODwQ`d$MyT+Q1&stc%^-It3X=I;;s zx7OJ$2c7pcf1I?yP}Fp) #include +#define TMAXTRAV 8 +#define TRACE false + typedef struct { char *nomE; @@ -49,8 +52,8 @@ typedef struct char travauxSucc[30]; } Precedence; -typedef struct fileAtt -{ - Tache *tac; //Demander si on peut pointeur -> moins lourd - struct fileAtt *nxt; -} ListeAttente; +typedef struct fileAtt { + Tache *tab[TMAXTRAV]; + int debut; + int fin; +} ListeAttente; \ No newline at end of file diff --git a/obj/structures.o b/obj/structures.o index f4730c0854c4500aa55369411f2582dd016e0a62..aaf79bbeda03d607cdf22c4ed8cb8a2779cd9540 100644 GIT binary patch delta 3247 zcmai$e`wTY9LJyAedlgJ+--W(ZEoJptZuf!Oiimj^EbABn60xM^?^w6W}bS#*l z+?9jwkAco-10%szM`^B5HgF@8QT-vdXo{E=#0dkZ3~FGoBf;LEdp_6Jmh`ai_w~F# zKc3IC=brEL{f=%L^qnvZ9ScRO-L`2uy0)!fkT-wYn1OD>)%D49(^fK}jpcXUuPYyS zYUQzO4i^eR-DrsrCCYDGRT(H1Vhb!&ONB7u%0+*x4i-;>bRk&OsgG?VDrw8j5ZP*% z@vLh+%S^iK#ZZcVF_eHlndLoc7;41+y0hLKx(7?8-yCw-vft_V8r3%SrQKO|$1akT z;~-C_D9o`%w`b44R$6&9X9-27vXD)Ebyc9=7l0I(im8tdISz+WYC88n=ZknR zuLG7lNn<6PX7bT7(KT#;>y{d`mnm`UPIHdGinr40$M}QnuOfee;N7Hy>E5aRrJ_^Y<`gJa7ZY5TU39rC@cX3NX^lDa=}?o1tx<(VZd+Wf zEOJ*o%+{gJkIC4l4k0$Ex{BP9@jM|m2~j-;E)&8^Xv!GdJHQIqqnh#v*ns$U&;xs$ zrrZkF!M+Y$FGTZd%|;(g`?*TW0 zJ3$i#c4#&RK+5xh<;XKNi8jr~07(C+3v2)jz>)|O@~9((oWRdU z1;)W**vB+w0$c(6P42~8PyXnQY+6T~{LDQmz06~+!-1;#+q0q}Xy2T~yu#JOzMYRaih9XF7P z^{0RfFccu5PgDB9&9Ik&;qsv>=!g8ofbaWr*Mi8Cz!Xv7ocyl z9$^mKvHlbogJA<01!)D2fOrd8?V2(OQo)@dHmY8h<|ao8Ub7Bel9C^Vs14vC5XADMxXJY(U~wkP3ef8t@Nm$~Z`cJ3uNN z1+ggB5ly)Rq@{lqtOrey;_3KCd}TGA)A%Q?8cm6PkQxZfEHDQP|0PkX_R_17MHo6C zD&0OuCm-4APloyAhc4w$hy?nipJ3h3x{7rt>ju^>tY2fjopn&_h*-mhy&O=?`ZLyl zVRBUPBI_ES&~L2mtp8+vi}RDL&#|t?wx;$z>lafRyEVjyS2!TR`VH34uzs60O@^-b zSWofQnoO1A-v6a@DkSahN|`#INk7tx0V^E=upkV@vI2_8WN2snL^4{tkN5 z&~C7QInEDi^t+MYsn?ksgjj&hWTLeQ?T?&eWHV4ePY`2{gB{nO4v%+$m1%+!;! rG~T!~{VL)vZ0eac#)=o8`YTOUKou`_ulor!V7gV~3hw delta 3432 zcmZ{mT})I*6vyZ80=s;a4_O5%u)9_bTCg-F)*z!-0Y7gHCi_6!P+5uwDov=aDXk<+ zV;^{+33N#G!KTHJ1T0BOpm8@fRRc+Vpk`}mV~uGjA))z>Nd0HvPH~p8=7-H2e+@7c;T7ThGt}C&$-P{z0>4^4QBM*+g1?D z)XKDLcCQeEnyq<4M+9tm4`x3Bl&3b@)vpiHt{<7`%fL3n{jl6ogX&O zIaixury<^tI=;vQWARCcIUmn4kc07h)dPnsA-b@Tqo(cNpsnK;IVUk#G}WA+L5Cs( zZP1-4Vx66aIgf&WQQ;dx7pC|C2B%!CWo#mp7qyG|*o5uqlgRyY7WHF46 zPIPY=Cf3Hdu{P#5gE-Bf7Kzp%YFED|7AmJbSIs54hWnE$oN7zDM>VGB7X5F*vpd2m zSj^bMqD_mRyul1d?a7zaV0w`eRX?S_qSj>e4*!txr(ya=&%M)h__!xjUnV!A zc4WJaGUdm0Onr=NtLnowq^{%YQ@^1`u2XkDyG)G{<#oA@dbI=B3FUXWy~QaywPl$e zXH*|@yVZ4U@nz94j4u2D93enQ2Syu~I!(Ri^#4NA?{q|_ed~hTDg5!^I z4&@_0rzs=gUc`IBDiIVVU1;pU0G*n3Z6Fm6fOMp_YRV>X7Yzt*2FpOoD+O_`S;d+% z6Wjy;13ZO&U=*wZCqNn}qFFZ%?hYbw1C7-vFs3Q5f&1aV0_MUW(v@ulv_Z`F9WmSFV&P2*wN&VII;dXxU6wFKv@s&MIh=B0`F%@ z2qfJGmV*J125JQ}(62>P7A5Jt=|ml$1k(|}t0@EEKJ>FVz6Zp)4;8WJ6Y3lMfnf$`$xP2R)QnoZg2=pMg2id*&9TI2JQy& z6s#^y*#z!{zXGfT%Rnkn3St$lVojL|(x!BRR3`z%B3ks@49XFk?mq}pe;n%qi)LNW zl)+9ks6You1=>NZrq!k?OTkU>ujRN0#Ohi3nsV0A{h}al-kR2w6(H4pjB}+F`~;-> z9U$gr(TNBil(lHk68gZMpb1h(I=`s{ozoc0LJ^|GK8gA9m;}bKaF;~sK{YT*b*#P- zTn~{B6}QW1q@#EIi>H9%&{KH$WDn3LeV_Fx>xZn*vR+^vWSxRtM%KVOOY5MhW=9Pt z6tRAbbt>yl)+SG=i*+{ZYpj3g{F|)9tfyFi#`=$##;!iWj=wpfmbDA-4cS)KZq|jY zi&-12CF{*Rp?$2ASs!41m-A~#V|?*7I~q8FHX1GQN34&sKF#_7>u*@U%KB&4F4q6B zeuT$M^|sN5fYBR4`XDroFBZ7NyPR-~^#`mkvi_X)JnQ%#87GaR@h{(M448rcGk8zQ z6#hxae?h&hLrHpk@jW}@9|80#P=|IDC6o9kU5^)<47)w1<3Ha)#3(+&@$($-rmYXl ziN`^*oFg`V23;1 HL$?0_&J^vY diff --git a/srcs/part4.c b/srcs/part4.c index 5a66271..c837eb2 100644 --- a/srcs/part4.c +++ b/srcs/part4.c @@ -1,40 +1,35 @@ #include "../includes/main.h" -void traiterTaches(Tache **tabTache, int p_tmax) +ListeAttente* traiterTaches(Tache **tabTache, int p_tmax) { int i; int dateCourante; - ListeAttente *file; Tache *tacheCourante; - Liste successeurs; Tache *successeur; - - file = NULL; - initialiserFileAttente(tabTache, p_tmax, &file); + Liste successeurs; + ListeAttente *file = initialiserFileAttente(); + + for (i = 0; i < p_tmax; i++) + if (tabTache[i]->nbPred == 0) + enfiler(file, tabTache[i]); + while (!estVide(file)) { - tacheCourante = defiler(&file); + tacheCourante = defiler(file); dateCourante = tacheCourante->dateDebut; successeurs = tacheCourante->succ; + while (successeurs) { successeur = trouverTache(tabTache, p_tmax, successeurs->tache); successeur->dateDebut = max(successeur->dateDebut, dateCourante + tacheCourante->duree); successeur->nbPred--; + if (successeur->nbPred == 0) - enfiler(&file, successeur); + enfiler(file, successeur); successeurs = successeurs->nxt; } } - for (i = 0; i < p_tmax; i++) - { - if (tabTache[i]->nbPred > 0) - { - printf("toutes les taches n'ont pas ete executees"); - exit(1); - } - } - - // nouveau tri fusion pour l'ordre des taches -} \ No newline at end of file + return (file); +} diff --git a/srcs/structures.c b/srcs/structures.c index 27821d8..d2f3c16 100644 --- a/srcs/structures.c +++ b/srcs/structures.c @@ -28,13 +28,22 @@ Liste newListe(void) } //file -void initialiserFileAttente(Tache **tabTache, int nbTaches, ListeAttente **fileAttente) +ListeAttente* initialiserFileAttente(void) { - for (int i = 0; i < nbTaches; i++) - if (tabTache[i]->nbPred == 0) - enfiler(fileAttente, tabTache[i]); -} + ListeAttente *file; + + file = malloc(sizeof(ListeAttente)); + if (!file) + { + printf("Erreur d'allocation mémoire\n"); + exit(1); + } + file->debut = 0; + file->fin = 0; + + return (file); +} /*------------verifications------------*/ @@ -53,11 +62,11 @@ Booleen emptyOffre(Offre *o) } // file -Booleen estVide(ListeAttente *file) -{ - return (file == NULL); +Booleen estVide(ListeAttente *file) { + return (file->debut == file->fin); } + /*-------------insertions---------------*/ // Insere un devis en tete de la liste des devis @@ -94,23 +103,16 @@ Liste insertSucc(Liste l, char travaux[]) } //file -void enfiler(ListeAttente **file, Tache *tache) +void enfiler(ListeAttente *file, Tache *tache) { - ListeAttente *nouveauMaillon; - ListeAttente *courant; - - nouveauMaillon = malloc(sizeof(ListeAttente)); - nouveauMaillon->tac = tache; - nouveauMaillon->nxt = NULL; - if (*file == NULL) - *file = nouveauMaillon; - else - { - courant = *file; - while (courant->nxt != NULL) - courant = courant->nxt; - courant->nxt = nouveauMaillon; + if ((file->fin + 1) % TMAXTRAV == file->debut) + { + printf("File d'attente pleine\n"); + exit(1); } + + file->tab[file->fin] = tache; + file->fin = (file->fin + 1) % TMAXTRAV; } @@ -141,26 +143,20 @@ ListeDevis del(ListeDevis l) free(md->dev.nomE); free(md->dev.adresse); free(md); - return l; + return (l); } //file -Tache *defiler(ListeAttente **file) +Tache* defiler(ListeAttente *file) { - ListeAttente *premierMaillon; Tache *tache; + if (file->debut == file->fin) + return (NULL); - if (*file == NULL) - return NULL; - - premierMaillon = *file; - tache = premierMaillon->tac; - *file = premierMaillon->nxt; - free(premierMaillon); - + tache = file->tab[file->debut]; + file->debut = (file->debut + 1) % TMAXTRAV; return (tache); } - /*---------------calculs----------------*/ // Calcule la longueur de la liste de devis @@ -173,7 +169,7 @@ int lenListeDevis(ListeDevis l) len++; l=l->suiv; } - return len; + return (len); } int lenMaxNomEntreprise(ListeDevis ldevis) @@ -190,7 +186,7 @@ int lenMaxNomEntreprise(ListeDevis ldevis) maxLen = len; ldevis = ldevis->suiv; } - return maxLen; + return (maxLen); } // Calcule le nombre de precedences pour un travail donne @@ -340,19 +336,10 @@ void displayPrecedences(Precedence *tabP, int tlog) int i; printf("Liste des precedences :\n"); - for (i = 0; i < tlog; i++) { + for (i = 0; i < tlog; i++) printf("\t%s\t\t : \t%s\n", tabP[i].travauxPrec, tabP[i].travauxSucc); - } } -void afficherTaches(Tache **tachesTriees, int p_tmax) -{ - int i; - - printf("Tâches triées par date de début :\n"); - for (i = 0; i < p_tmax; i++) - printf("la tache: %s, debute : %d\n", tachesTriees[i]->tache, tachesTriees[i]->dateDebut); -} // Partie 4 (à trier)