From b89507d17bb0af03115b0e5209290f5001125b72 Mon Sep 17 00:00:00 2001 From: "antoine.perederii" Date: Tue, 13 Dec 2022 09:17:24 +0100 Subject: [PATCH] ajout du tp15 d'algo --- Algo/tp/tp15/exe | Bin 0 -> 17384 bytes Algo/tp/tp15/testtp15.c | 10 ++ Algo/tp/tp15/tp15.c | 235 ++++++++++++++++++++++++++++++++++++++++ Algo/tp/tp15/tp15.h | 36 ++++++ 4 files changed, 281 insertions(+) create mode 100755 Algo/tp/tp15/exe create mode 100644 Algo/tp/tp15/testtp15.c create mode 100644 Algo/tp/tp15/tp15.c create mode 100644 Algo/tp/tp15/tp15.h diff --git a/Algo/tp/tp15/exe b/Algo/tp/tp15/exe new file mode 100755 index 0000000000000000000000000000000000000000..772dd7c76e68119425e76a5681222e5173f9a62f GIT binary patch literal 17384 zcmeHPeRLevb$_e1EMd$_#x@Z)2@`^g2xu)S;D{23)yLW+DjR>vgn(JEwJT|jw5#sU z8k=HAuE5Qn#h`OSQrdhf_aC<&{`xPq8=Nrbn* z``){wnem!`+SC5C@0{8D-tT_A`|i6lnm02~UkmrFsq*;*7r*$jpw^*!g@iO?@JqS^ z5)y6VV*Gwad|J#$d!ED;Kcon_sti`SX|2ZnprrSt=6mTCT8=4uNR;$0R7S}m6sAIt zgY>G2q1#^irgn@e^X>i&QbsZ4uT96bGfbU&4+ZpZcSN_nxt3MdPS|r zbdnrGVao9&H|RL3?RjYzDWNbWSt=WTX2qnQA)Df;hd!fV!IbqjLQjWUOMEinuy4}+ zT_`RM+JB~cxMJl{V#lf*Ru09Qh7!r_?xx*stD08b5X_{4t#aH;&^_hU+V#ESo4elo zhX<{u-0SI$&uut0)!4IRL6rO^AIKibP$78^KhcYE5MPaJKWYji`f~iAhKXLNbbxVb z87A2*hi?OJl#!>t%gHak0N#87d=GE~hqo*PP|iM$yBz*?;06wF`7D5|ydbsXyAzfe z$yyou=^Kou#Yj4lwED$xbZ98mCnAx)-O)&YA{iY@+!sd^6WbTbSkbf<8IC5BqCXvv z3j%3!SBbSf-5s5g)?jP!MiJ@WvMv&fr{e>Oj1^CBS=Tv~O2)TDcMOrCf#FnA8;U5= zvVt_{G~4vcbS@8k$bhxra=vDlB`zZFMj9ImpT~UOjV@C7j6P2p4{3ZuNbwox_NiMG zPV-H9$Ys)jJI}9z1FvCW&>085z=0PXIOQOhhLEa}4VrTJmg45=F7eC`v{ z9HL(#2$$DY*%G2Hq$-5-mBhIgDy?`2zjarJP^0!B@uwzBC@Ws0Hr+~2os{jL zP@8TcrzT|kC2G?x?$pz={T#LFR&wf)Z2ySbbPG8(F55fM?jJ{6mX`Orb1&a*=H52P z-kI63rRQMvGTc_02QT?+++msrS09E{Y3XIqIa_ySmxT7CVIHi$kH}3$Ybl0zCWtzQ zcTs7w?#fXzd_+^2*eK<1yp_nc=gi!UdHBpN=Ha5>^c^!_K4&d~f#+R|jd?1%M7 zS1*E|$gb=)$5#I-q=cFKnYGZ&ul@jyLKB8m7{t%9>M68++gOk3)bD`V3mrJJI{=Np zKL?HZhzEd22>2cWB>+DpzqcKc!pFli)H08Ui<0KUGiJWGsJNRkscmNNBN|HXh?!e= z(#&l;mFqq6EUjt^dtlJag$w4`-h#+3M?XF2M_Mne1MgXy%t9YY<->)1?}=PJRm|fd zc|(tWPNIFv%>9d*J63oF!VgSX%cMvyOsoQ|p8`d__tf+iQaIlWbOTb&%{BAeiZ7}m zjh!~kT+z(EZ{}Wtfk`t5m3;4{QjvWnRA1!s4=!Ps|L|jW`DxT_jhmj!E`}=1951W| zqi_@hnr>83xF~5pR4aSRqYW`b>O%$2YNs3yA(p+QHiJaUQbdYWsreyAYr0y7Z)_41 zEazwJbiH#hTDNybs;R(z8xxPf(O?P-c`*Mt%Y*rM)Tp<-INuc+o8#eG^em?9$HKEd zNWyJS6d^G<%oasEG;h!3&9@O9?d16PCVot z=5TKzmwiX2T7Zn@5UH`fMU`rwvO9YF*F4lBYUrkz?|nz78Ybh%=ndhylo*&0Opwf; z;1V49L~P{ z5xF~T53hz_)7!a^ypUORo6W8!_O;AL3aELIgOH-v*rKm}qynZRU(CL!GVKZAbB-0N zX@c}+K@WWTs(kOPnO}#@Cr|&GE=RKzFD*tV#@OE3#(k%z_p-`n`vRfP!u7~dN>KNO z<{n39lv(aR9y`B}`TM@>G12HS;bAqQ&#|Jf?vVjR*2DWT)MS7b;3ad^e00#PiURI zx$S?`^2+V5)L)_!+;1bV@fnyWY2aVNLD0ucn@G`RxPzzfMZ1pYrlT zT&?9doGFz?NHkEtCeUze-NpCTj*45B-Te74TzwV6q>slW;xWj{*n-F!CwmgLoWT_v-J;wzaRVqF8+R-KLP%`pJ0Cy{C@?%)2Y92u75gR zXTiVS$*M9EehB>UgTDa%*mLBs_K|=AXgm1dLXJQ0(w|Tc0HfS_ z05WaJbNYrsbOh=jsp<|iJnRn#jDz#SfyRfby8_Jz=9_`Gv6{7k(9S?xd!V^J(AW_$ zIsy%l?+Db&_vo%_;=(|!X{2e6S%TrK8tH ze}GfMFRJYC+}*fe(AwKu{P=Q}*5cmcM;3CvIeC730nT~p#%l!6pBu+|h7;Ps@QaHC z=aU1*_r444ymRBoa!)*o?-vV&Q5L^MjF-g&_WljG{W`(tvm1vI!-=T6Uo5is130;U zd?`NqStr8si|y~Dom@YjI`DPDjV~4D^3RVaIsARJTOMa^$cd=BUo;4_EPlE8N?Dw* zR&%!KJe?=rFU=vUM%TqE5fCRmamE)D5=V$!g~CGee4SDxEldW#Y3F zIN2HX*xx1P&yO=bPbud=JqIX;a4wU=N^d%#4_zqo3=RuydL@N&D#LUSDkKhCm?-d#!(Rn4GeL?kliL=!?`Xf~9alUU4&0$oV zgg<2ekj`6vwtI`VKdk$u>jIT9aI)jghmBhPLG2)&|5UazuIEubwHM+}jlZSmMLz$8 zd`#j})%BAFPI2@0yC1mWl2na9()MfgyvXN|V0{PpRb}KSwEWY0ytlJVU)su8+5Y}u zpP1X}6S0OPeYDpngMB`+RAgW%wIezdiCL+1CKAo=7JaGVk)gO1j|H2{OVEy^L?oI{ zNB2bHNh`ev`;4N)@klH?JiG@gj#dPcmP^#aI|pl|ULEOD#D-z43B7@OnjCON% z-v-H8A{ohM;xR$4+V&|fG(~zxnX3~D6$$RhWOPsD8YHo?EZX0n=o^fu5rUdy=rHsFhZnUGa1V@77$62zcrEP?QvOZDhz2K^d_i zs=D~RkLn6j@9hr%Js@2wt8h5= zd7Z)3AR$Nb>UV*MSAZ$*pVuQyxqn_p@cNTYu1AH|z^u>f7N!OT2Zh$rRAqf$uhR9N zmO!k}>l>y|fafgQoDJQL8m(zrpVvW5xgYkQ<(S?BeOe=Po7YQB4c(L1e+`TKP@$Nz zKCi2oPG~{y-#h*Xw0?({o6&+y#~u1~%jDI67#PKbpHtASgDjfr+bj(#U+o4eIUG)X zL+ddeaSEgEF)tqV=<~XdDf`Q2xXtu&kNzRu0n-*1)CRbJw)ZCwfz6F$WkNf9!75|@rNeT`M=O^p&JU#{< ziLgGeuTQNcEg>2ev42^g=`X->>Wh#TZC2FOO(v|z^p{{b_4&Tu)cWkFSD)J-p+dIU zf4(pMiq_|TSYC&No8la5glTabXZ>qzL{(VdN$uQq$d0oA+5!4I6vV;)@O6>S5BA-m eF2>tb>m`qI?w4ihcD|hcS8rAlH68^|Q~WotOzqhK literal 0 HcmV?d00001 diff --git a/Algo/tp/tp15/testtp15.c b/Algo/tp/tp15/testtp15.c new file mode 100644 index 0000000..9c3e56e --- /dev/null +++ b/Algo/tp/tp15/testtp15.c @@ -0,0 +1,10 @@ +#include "tp15.h" + +int main(void) +{ + printf("-------------- Jeu 1 --------------\n"); + jeu(); + printf("\n-------------- Jeu 2 --------------\n"); + jeu2(); + return 0; +} \ No newline at end of file diff --git a/Algo/tp/tp15/tp15.c b/Algo/tp/tp15/tp15.c new file mode 100644 index 0000000..827ed52 --- /dev/null +++ b/Algo/tp/tp15/tp15.c @@ -0,0 +1,235 @@ +#include "tp15.h" + +/* Exercice 1 Partie I */ + +File filenouv(void) +{ + File f; + f.t = NULL; + f.q = NULL; + return f; +} + +File adjq(File f, int x) +{ + Maillon *m; + m = (Maillon *)malloc(sizeof(Maillon)); + if(m == NULL) + { + printf("Erreur d'allocation memoire"); + exit(1); + } + m->v = x; + m->suiv = NULL; + if(vide(f)) + { + f.t = m; + f.q = m; + return f; + } + f.q->suiv = m; + f.q = m; + return f; +} + +File supt(File f) +{ + Maillon *aux; + if(vide(f)) + { + printf("opération impossible"); + exit(1); + } + if(f.t == f.q) + { + free(f.t); + return filenouv(); + } + aux = f.t; + f.t = f.t->suiv; + free(aux); + return f; +} + +bool vide(File f) +{ + return f.t == NULL && f.q == NULL; +} + +int tete(File f) +{ + if(vide(f)) + { + printf("opération impossible"); + exit(1); + } + return f.t->v; +} + +int longueur(File f) +{ + int cpt = 0; + while(f.t != NULL) + { + cpt++; + f.t = f.t->suiv; + } + return cpt; +} + +void afficher(File f) +{ + while(f.t != NULL) + { + printf("%d ", f.t->v); + f.t = f.t->suiv; + } + printf("\n"); +} + +/* Exercice 1 Partie II */ + + + +Fil filenouv2(void) +{ + Fil f; + f = NULL; + return f; +} + +Fil adjq2(Fil f, int x) +{ + Maillo *m; + m = (Maillo *)malloc(sizeof(Maillo)); + if(m == NULL) + { + printf("opération interdite"); + exit(1); + } + m->v = x; + if(vide2(f)) + { + m->suiv = m; + return m; + } + m->suiv = f->suiv; + f->suiv = m; + return m; +} + +Fil supt2(Fil f) +{ + Maillo *aux; + if(vide2(f)) + { + printf("opération interdite"); + exit(1); + } + if(f->suiv == f) + { + free(f); + return filenouv2(); + } + aux = f->suiv; + f->suiv = aux->suiv; + free(aux); + return f; +} + +bool vide2(Fil f) +{ + return f == NULL; +} + +int tete2(Fil f) +{ + if(vide2(f)) + { + printf("opération interdite"); + exit(1); + } + return f->suiv->v; +} + +int longueur2(Fil f) +{ + int cpt = 1; + Maillo *aux; + if(vide2(f)) + { + return 0; + } + aux = f->suiv; + while(aux != f) + { + cpt++; + aux = aux->suiv; + } + return cpt; +} + +void afficher2(Fil f) +{ + Maillo *m=f; + if(vide2(f)) + { + printf("opération interdite"); + return; + } + printf("%d", f->suiv->v); + while(f->suiv != m) + { + f = f->suiv; + printf(" %d", f->suiv->v); + } + printf("\n"); +} + + +/* Exercice 2 Partie I */ + +void jeu(void) +{ + File f = filenouv(); + int i, t; + for(i = 1; i <= 40; i++) + { + f = adjq(f, i); + } + while(longueur(f) > 1) + { + for(i = 1; i <= 6; i++) + { + t = tete(f); + f = supt(f); + f = adjq(f, t); + } + f = supt(f); + } + printf("Le gagnant est le joueur %d\n", tete(f)); +} + +/* Exercice 2 Partie II */ + +void jeu2(void) +{ + Fil f = filenouv2(); + int i, t; + for(i = 1; i <= 40; i++) + { + f = adjq2(f, i); + + } + while(longueur2(f) > 1) + { + for(i = 1; i <= 6; i++) + { + t = tete2(f); + f = supt2(f); + f = adjq2(f, t); + } + f = supt2(f); + } + printf("Le gagnant est le joueur %d\n", tete2(f)); +} diff --git a/Algo/tp/tp15/tp15.h b/Algo/tp/tp15/tp15.h new file mode 100644 index 0000000..585c25d --- /dev/null +++ b/Algo/tp/tp15/tp15.h @@ -0,0 +1,36 @@ +#include +#include +#include +#include + +typedef struct maillon { + int v; + struct maillon *suiv; +} Maillon; + +typedef struct { + Maillon *t; + Maillon *q; +} File; + +typedef struct maillo { + int v; + struct maillo *suiv; +} Maillo, *Fil; + +File filenouv(void); +File adjq(File f, int x); +File supt(File f); +int tete(File f); +bool vide(File f); +int longueur(File f); +void afficher(File f); +Fil filenouv2(void); +Fil adjq2(Fil f, int x); +Fil supt2(Fil f); +bool vide2(Fil f); +int tete2(Fil f); +int longueur2(Fil f); +void afficher2(Fil f); +void jeu(void); +void jeu2(void); \ No newline at end of file