From 3a1e525a4b1385b8ac90751f6ec09e0409bd889b Mon Sep 17 00:00:00 2001 From: untypequicode Date: Sun, 13 Oct 2024 15:27:04 +0200 Subject: [PATCH] TP3 fini --- tp3/TP3/alloc.o | Bin 6496 -> 7464 bytes tp3/TP3/main.c | 6 +-- tp3/TP3/main.o | Bin 6232 -> 4096 bytes tp3/TP3/queue.c | 90 ++++++++++++++++++++++++++++++++++++++++---- tp3/TP3/queue.d | 2 +- tp3/TP3/queue.o | Bin 4816 -> 11680 bytes tp3/TP3/queuetest.c | 48 ++++++++++++++++++++--- tp3/TP3/queuetest.d | 3 +- tp3/TP3/queuetest.o | Bin 4200 -> 6968 bytes tp3/TP3/stack.h | 1 - tp3/TP3/stack.o | Bin 8112 -> 9616 bytes tp3/TP3/stackqueue | Bin 34160 -> 37768 bytes tp3/TP3/stacktest.c | 24 ++++++++++++ tp3/TP3/stacktest.o | Bin 6840 -> 8968 bytes tp3/TP3/testprint.o | Bin 10688 -> 12040 bytes 15 files changed, 155 insertions(+), 19 deletions(-) diff --git a/tp3/TP3/alloc.o b/tp3/TP3/alloc.o index 1eda92c46d882f58abed28a0b26c49795db64d31..fc4440c6ed2b6a3d54074ac29e754130715323a4 100644 GIT binary patch literal 7464 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 literal 6496 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 YF{qI92e;W!{#VfWe;ecro238$0Np>fPyhe` diff --git a/tp3/TP3/main.c b/tp3/TP3/main.c index 37b7d83..63fa6a6 100644 --- a/tp3/TP3/main.c +++ b/tp3/TP3/main.c @@ -8,10 +8,10 @@ #include // Basculez à 1 les valeurs ci-dessous pour activer les tests correspondants. -#define TEST_STACK_BASIC 1 +#define TEST_STACK_BASIC 0 #define TEST_SORT_STACK 0 -#define TEST_COPY_STACK 1 -#define TEST_HANOI 1 +#define TEST_COPY_STACK 0 +#define TEST_HANOI 0 #define TEST_QUEUE_BASIC 0 #define TEST_COPY_QUEUE 0 diff --git a/tp3/TP3/main.o b/tp3/TP3/main.o index ff22118fe9e82b0194474d6c1e027a05fdcc0f76..59d125986dad7d494888dfd98734e25cf4b3be10 100644 GIT binary patch literal 4096 zcmb_fU1%It6ux(6C)s54pBkG+$slUd(w)s8A*rT~iEUDeT1$h9$~wC{*1nZQ>d-yiUpTk2S_*%+ydK&fJ-U= z?&?H_w*Y=146DNzlY@q7asI(@6rqv_b!YWYfmsVoMGKCS7?^*5UA0n{i zlZFA|*UNt1Rs$aD(j%+(;>4sqKIKd}s$-{QC6x4ig zF7NqXrI-cPtz-*xn={kN=_xyzx08>K*~w~J6%%*~k$<(swGJqpKn_!iDC><2bn419#a3GS=>CVI^z z>D-GBfE|)Ne^$uN9y!#}8sC9QywiNI6@Q?s=M`hIv*mFxP#(<(j2jbw-E1~%Htm3L ziB+}xJB`^zjIedErJXnjy~hV6Q_u5i*q*?XQx4O2dC4{b3FNlk{^MeuMOkhJQzT zUc;}GUeoXvy7(6~oK*3WhJQu+>l*$l>2GTIPo!Vg@GGQ$s^K4!{)2{d-9HnqpBL^e z67IixFDR{XM|JzVXddnHo;al6tKqApAJK5$U-siT7s)PqA22@e&zu(L4bm4h{2kJl zH2ee7S2X-%(jU|C&q#lYxV{fI;RbO0)yb)Dl>#>-oN7=Bd4Z*hx9&QDw;2d0=LW8D zGS#YZ6q@rgwS2nhua#j=$!;c7@t)r^?ZO)_5AT7f%X-oG*ah;ih;Ulz*>b7m!3)gs z%Yo-WD~DIEn|+RSc=bB)_S*0&!4}2!3hA|q3oq3Fg=~m|d&l>TgU*w{{gQFCjnWV( z*uUnZAjokFI7T>pa;ZGr_YM+{_Yz}9?>0_7jYAXC^B)BpjQL;vr@>c`iD^0iE-Dey zZLx1QTmKBLf0QmCt{?lYzWxQk^q2sN2MOFkB|^F_KF2zS=GO`2{pS$6?HQP8R{yh9 zDEnjm2F;W|N7^fKj7XbD+m zz75vR{9mIB^+g!2KC&P4oqzFP#zg_8LRKHykNMj$!*bmSgcry^ilMCAegqiyVOlPl zDB2`{eP4M0*zQ{pFsAN*h5WhSv%T*BB}|~{JR1;yOa12)f}e9dKl~PAf5w~T#t^?! rem;Nvenns1AJgd1K0soZK5qCs2r(pm|FEWJ{#U8~AC*^Q(Ea}b`A%o( literal 6232 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 D3Ry-7 diff --git a/tp3/TP3/queue.c b/tp3/TP3/queue.c index 5f33a07..eb953f1 100644 --- a/tp3/TP3/queue.c +++ b/tp3/TP3/queue.c @@ -1,5 +1,6 @@ #include "queue.h" #include "alloc.h" +#include "testprint.h" #include #include #include @@ -14,14 +15,40 @@ // Cette fonction sera utilisée lorsque le tableau est plein et qu'on veut y // ajouter une valeur. static void grow_queue(queue *p) { - return; + while (p -> left != 0) { + int temp = p -> array[p -> left]; + for (int j = 0; j < p -> size_array; j++) { + p -> array[(p -> left + j) % p -> size_array] = p -> array[(p -> left + j + 1) % p -> size_array]; + } + p -> array[(p -> left - 1) % p -> size_array] = temp; + p -> left--; + p -> right = (p -> right - 1) % p -> size_array; + } + p -> right = p -> size_array; + p -> left = 0; + p -> size_array *= 2; + p -> array = realloc(p -> array, p -> size_array * sizeof(int)); + return; } // Divise par deux la taille du tableau utilisé dans la représentation // Cette fonction sera utilisée lorsque le tableau est rempli à moins de 25% de // sa capacité. static void shrink_queue(queue *p) { - return; + if (p -> size_array >= 2) { + while (p -> left != 0) { + int temp = p -> array[p -> left]; + for (int j = 0; j < p -> size_array; j++) { + p -> array[(p -> left + j) % p -> size_array] = p -> array[(p -> left + j + 1) % p -> size_array]; + } + p -> array[(p -> left - 1) % p -> size_array] = temp; + p -> left--; + p -> right = (p -> right - 1) % p -> size_array; + } + p -> size_array /= 2; + p -> array = realloc(p -> array, p -> size_array * sizeof(int)); + } + return; } //////////////////////////////////////////////////////////////// @@ -29,25 +56,72 @@ static void shrink_queue(queue *p) { //////////////////////////////////////////////////////////////// queue *create_queue(void) { - return NULL; + queue *p = malloc(sizeof(queue)); + p -> size_array = 1; + p -> left = 0; + p -> right = 0; + p -> array = malloc(sizeof(int)); + p -> empty = true; + return p; } void delete_queue(queue *p) { - return; + if (p == NULL) return; + p -> size_array = 0; + p -> left = 0; + p -> right = 0; + p -> empty = true; + free(p -> array); + free(p); + return; } bool isempty_queue(const queue *p) { - return false; + return p -> empty; } int getsize_queue(const queue *p) { - return 0; + if (isempty_queue(p)) return 0; + else if (p -> right > p -> left) return p -> right - p -> left; + else if (p -> right == p -> left) return p -> size_array; + else return p -> size_array - (p -> left - p -> right); } void enqueue(int val, queue *p) { - return; + if (p -> left == p -> right && !isempty_queue(p)) { + grow_queue(p); + } + p -> left--; + if (p -> left < 0) { + p -> left += p -> size_array; + } + p -> array[p -> left] = val; + p -> empty = false; + return; } int dequeue(queue *p) { - return 0; + // print_queue(p); + if (isempty_queue(p)) { + FATAL("Pop on empty queue"); + } + p -> right--; + if (p -> right < 0) { + p -> right += p -> size_array; + } + int val = p -> array[p -> right]; + if (getsize_queue(p) <= p -> size_array / 4 && p -> size_array > 1) { + shrink_queue(p); + } else if (getsize_queue(p) <= p -> size_array / 4) { + p -> empty = true; + val = p -> array[p -> left]; + p -> left = 0; + p -> right = 0; + return val; + } + // printf("left = %d, right = %d size = %d\n", p -> left, p -> right, getsize_queue(p)); + if (p -> left == p -> right + 1) { + p -> empty = true; + } + return val; } diff --git a/tp3/TP3/queue.d b/tp3/TP3/queue.d index 93c5866..edd26a2 100644 --- a/tp3/TP3/queue.d +++ b/tp3/TP3/queue.d @@ -1 +1 @@ -queue.o: queue.c queue.h alloc.h error.h +queue.o: queue.c queue.h alloc.h error.h testprint.h stack.h diff --git a/tp3/TP3/queue.o b/tp3/TP3/queue.o index 4a85dac19560f70a444d7d12f849474db5871f95..66a26b781e3c92bfecbd49ece9b9dad97280d5b5 100644 GIT binary patch literal 11680 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 UoF^ z&OPVdpZDI5s8!2tBocy6Lf#{z2w6fZr;Xa-q8U!!ATvo~w6QPRxc$4zjeq3K^Gr2? zWm?WN1{${yM;r5>ju{M`)|w)1#N<|7SeqYjmPsOyw}+HmRfK84}0y(fb1ok{pK_l)Ui z^CtVLvO%9uf=&j=UG@HIV{n|UF|Xx9Z`*~z_&-Iy)qAAs>Bf00{4N^fy(+r?O5aQ|2WjWmAIG8`-05`u9XxF#D%rl6_=-8QOU~&&*_f0C2Atp zE#14b<^Ii(h>QKzCB;v?*I!-hnG!wMuJWBtj!jP8&mvB?=H@or8XU5R>b)PXNBp+)g9RSGp)YqDy8bOC$thcBZ59^}>r+{l(OQ3D?OkL2e*ye4n2T%zv#CR5m(QN6e{#_g1TaoMs1YNx3Bjt!Luf)jQb z9kdHb%{0e!OG2zSX~O&_R$kU!Q8|^5_!j-VVM&74qxdV?*AK2<_|=B0Wsb7oiqf!= z`bW2mjnA$h9(lEGcSd4iSlyJs`8f{PKb6<2?F(Jy0rjan%)gm_??azc_vdu}I{A3x z#z%=q4JYmw-|uJ+S?T@Q&-L`2x;sxFv^{?cx;bQN&0Faj#lIG>uQ*qv`{w<7 zvoi-v75C;QL|h5|wjnr8F|_O9o~8dN8qw^Pw7c%u<9)sElE&1qsxB(-#G2u%J$@@c ze)W!<+&tv*i|t;~eGg|Hnp3o4+`8c{1^da0$jA^+ z-xaG96`lc$l!3|s&p=h+BGtPAmYpz#=Jll459mcj#D+*rjKd}YjO#HI9FpRn5J{nn zWVVx?eI<2zP@Y|^IkH=X%%$8Wa+>XODxi@0mNK5U@AD^F+~4ajd5ymo{LZY${IR3? zTVLb<8vL@c@iC+E!~Z27ToXDrZ&S#?s|gNDNUf)A)ayV^x&~H4oGXghyfYp#_Dm?H z876B|Vmld4^(@Q8Cbf<}-X|qa;|Yqq=;cc5`5}0)9wqS1&l>Wf)Mk1=ktIZ2BWlM0 z&-|<*zmD2WA1ktih-*Ua6yVnbk9x8-U&t4f=|rQ?DM%3k$jkwz0FWVU z5v(99Psq+S6oE@481k};Q7GsvLuCk-p0K^l+EjXton8D)GoEQ8=*60=r4#jR)&l_J zyfOXQ)o=$t+X3*&6`8kzXL>uZSr-g8=9RNR+Ll>5F)yp93h)|^R{&1pcw7%H$GgJ# zWgOoNcsIwN0(_9;aXlM2z7Fu`96uW{j)%|tCe(9|(+2>5iQ{8|zsB+XfWPGUM}Y5g zJV4UT@n-@5h2zbDaXeNATVLGAIIs9z2~g)O=usaFDR<+o}Fvfe#hy(EHt^x>B9i`aC+SL1DyT^jPo6*$M=T^90q(|+-LKEXJKH9BjMR( zdiHI@<^l$4k0M+-kjArxC`7Y{}9I7(!E^$>op{#$kkfybpD-_x%4F&-Sx8CL3f-YXW;FmynZ*-*xsE53!~R$`Av}bxTqSvVLUSIyEa*TE*z?bD1@GmUrG7N>Q9A( zr-C?EKYJvM$NDoUH(CCA$dB&<7{(fpnElsGmcJ767lM%GXYVIIe=g-%eib^X&6+37 zd#?pr? -#include #include queue *random_queue(int size, int maxval) { - return NULL; + queue* p = create_queue(); + for (int i = 0; i < size; i++) { + enqueue(rand() % maxval, p); + // print_queue(p); + } + return p; } queue *copy_queue(queue *p) { - return NULL; + queue* p_out = create_queue(); + for (int i = 0; i < getsize_queue(p); i++) { + // printf("left: %d right: %d size: %d\n", p -> left, p -> right, p -> size_array); + int val = dequeue(p); + // printf("val: %d\n", val); + enqueue(val, p); + enqueue(val, p_out); + // print_queue(p); + // print_queue(p_out); + } + return p_out; } queue *mountain_queue(int n) { - return NULL; + queue* p = create_queue(); + for (int i = 0; i < n; i++) { + enqueue(n - i, p); + // print_queue(p); + } + return p; } void select_sort_queue(queue *p) { - return; + int n = getsize_queue(p); + for (int i = 0; i < n; i++) { + int max = dequeue(p); + for (int j = 1; j < n - i; j++) { + int val = dequeue(p); + if (val > max) { + enqueue(max, p); + max = val; + } else { + enqueue(val, p); + } + } + for (int j = 0; j < i; j++) { + enqueue(dequeue(p), p); + } + enqueue(max, p); + } + return; } diff --git a/tp3/TP3/queuetest.d b/tp3/TP3/queuetest.d index 658c9cb..760c521 100644 --- a/tp3/TP3/queuetest.d +++ b/tp3/TP3/queuetest.d @@ -1 +1,2 @@ -queuetest.o: queuetest.c queuetest.h queue.h alloc.h error.h +queuetest.o: queuetest.c queuetest.h queue.h alloc.h error.h testprint.h \ + stack.h diff --git a/tp3/TP3/queuetest.o b/tp3/TP3/queuetest.o index 37a5ad7b3491292e1912f20bb47f1f0bda88b552..ec05e15f75b3192892c5f5e67286987adcde7bcc 100644 GIT binary patch literal 6968 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:*3|!o5UfpWCj+$i|)7&+3)U3PS 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 diff --git a/tp3/TP3/stackqueue b/tp3/TP3/stackqueue index 2c1feb207dc95160ed970369ac8682bbff2987d3..1412cd4a4a0d40bc252a1a89842cbb3b0b6d28ce 100755 GIT binary patch literal 37768 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 CcDDBb literal 34160 zcmeHwdwf*Yz3-So}^;?hqTWj`a-(0|{19W_&-t?(8g$rVv11Dq_;OhauUL6RFQol+HO$W%K>j+2lor^CPI zN{t$7dZNAxNoQ&BQE~v1hE6#m9a$>K>_}}Y+^_sHsGydkBFP<7a>tZh0xCxwQ&9Vp zd_sQiRB& zoN~1ke4nfC=F3%mWA#IY^1p_vdRE@rvUx#ed27S$)|R&J?X$NpTrhhG0xH z_y7Fr+lhzTK{CWciE#9%6PcffKjIPokrjwm5q{B|eR>L^G&)TLiulsg6d*F;SB!zL z9|M0s@FD!ACo(gWeriJ|{550XuO0(`5cm-O($h>JGU;DD27cZccyekcJx72K;V(UH z0b*)866G@dWzw@A_*_=ZcCC{_dcLxb?pPO#M7m;i^;;tK&08XkbuF!|u`?QF(d{iU zqSrUqb+TB?)+p<&YinSg(Yn^w_IkEef=C2IyPgzu#v)tmTH07wtRdRj$r?L4TiRlc ztc#@Dx1y5z?RAmHmbSXqmYbrCq-gvvU>B{eS+O!Qx2!Ueo0rVaEt}6GHS235&>3xN z>54@=*VnFWZEuUNuiM-jh1RC6?QN?1h-A&kNOQ)-{J_k?pG%Y|C;#c30gjvCBAO?Z z3R+sSX@=a2JmJ1K@Oca=i`}8h-6buUk|w(cWlDNo*8V-F?gK~Fx~uVf6uvpFKXiHU zQmK!|uUbk4;%Nt7+cz9{~X15b76G{b?{z9U+N1FzRa!Y_2-eS}b{%7OQ5Bw*NqM@J{p zItM-{fo1F}2VQldgF2oa_rSOZ#yv3ZfpHJ~&-B1w0%!jt+tFh6aU4>!tqzay|12Jx4wGL;GAc|{Y!6$(IbW5 z{4is0HI@ZRDT0JU`j^%~LAal@0I{hB5{ikqU8{bV%UK{V<4sh#WEEJeoy(=)Yc28jDhW&w=*M283GddWUx%Eh3 zX7{nc%$}1C;Xc>&8N$TfVaUuGJiMFy90Ka_?n>k;h}d5p499mbL^0gIoB9bQ>Yl^9 zC*ukZHvBtW`h;xnsq!19h5H0U-(93F{#@8NBD1}R?6|-k&jX9pxXup8?-JQQG;VhY z68{`cGoUHl`xq%?-AmAKwK$du_dQ1VzVDOY!hQYZ#BkqT+so14{qrBh{xBRr z{3B}F(2RFSMtVg8qGm;du2?S$aj5j>*#VvNRO#+i)!0SA8@b z|3x@{=qEH&MGex{Qp_~yU#|2oh5p0UN63QX82B58`l^qF<1fIF-=fmq>LW&P&yk5c zUn3Hf9?PusSxjdreP@zz%Fxg|8*YqH9ddc z&Nt3n(Yhz zgv;c%AuM28;zu;a`l?Tn^tUMA&(BeH{qY|oBacHN8#*7Y6&_dp9Pc@`=UUn2$*f=) zg$;utjp8WAdrpVr-6tK&Qi<{IGYdPosUoeX_XH+z4|(8JAL}m=4UAJ4p%~s9?l0I) zohF*ySB2^L0<}JZ<_f>XSJ-bnuN*g#SanUeRW$--45lC z2g$v^dK)#z(FagD0cV}(>0MVk%}y?08C zT+y{}B7fY_HEZ8gxpof*J~x=`G!pNtaw$abi4fdKQ)LLq-GevNqH<~>W6OVp+XaS7 zp|2PKW30b$73KQpn*yPhl9y5G;}}zHD4)!yNz^B7Cw1tDgU8Hp?~sdDOBSy_t?KDt zCs^a_Tmqp0>knHnHhl2lDRa@GoBcu?dTj&NroQUaNoS}b1^UT8A$ziqEjqM=1jH2i z4c0f2m!_OdnqnM+qPQs}t6cr-49dX_?KQX~-g6?}Jv6kG)>3rX;p(^0I(B^0&GI`pvAadPMzO4;$r;KFiwcxVxf6vGqECWC%MMk|^hdGzP=$L9be+~Ond z>JzB^D9n(n=GTS9hEoZ|Ua3L|JcA0M;&H8@oeXfcu`1s4)83w+vcMgmgpc~Fe+rx4 zB?a;7V?*!IogrR5H1wv-oFsbnOX0)Sr^usg`)W_F72~BAt=@q3ty`|x2>wR8PxbY@ zbY)-9Pp_nAUI2DPfFZDetrlz>j`dZ)R1-h>6I#3UZH+oAIRS8^5(@;@o^TvDgLv(+ zwYU?ljn^LO?Fq8Ltv>{NUv+R*f7J+VIkFaRfpVuUrzj8|=??Yv6kWM|U2Xgb8FL?c zOc`?o{E#7Iiqef~BAaQZLgY?3AWjn-R!}!p!jGA2M$@`!jX0U9=IN^DWE∓U`Ye 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 diff --git a/tp3/TP3/testprint.o b/tp3/TP3/testprint.o index 65ccefe5eca4bc915ce06f239f40f1c294a90952..69db6ceee8dcb36487e71606d106bbee1302ace6 100644 GIT binary patch literal 12040 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