From e54579e352971c3e244fc5d3e93eae9b253878fc Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Fri, 4 Mar 2016 14:18:01 +0100 Subject: [PATCH] Seance #3 --- ex3.cpp | 4 +++ ex3/Puissance.cpp | 24 ++++++++++++++++++ ex3/Puissance.h | 9 +++++++ ex3/Racine.cpp | 24 ++++++++++++++++++ ex3/Racine.h | 9 +++++++ ex3/Trinome.cpp | 1 - exec/ex3 | Bin 35075 -> 35735 bytes exec/tp1 | Bin 13907 -> 30987 bytes tp1.cpp | 27 ++++++++++++++++---- tp1/wordproc.cpp | 62 ++++++++++++++++++++++++++++++++++++++++++++++ tp1/wordproc.h | 16 ++++++++++++ 11 files changed, 170 insertions(+), 6 deletions(-) create mode 100644 ex3/Puissance.cpp create mode 100644 ex3/Puissance.h create mode 100644 ex3/Racine.cpp create mode 100644 ex3/Racine.h create mode 100644 tp1/wordproc.cpp create mode 100644 tp1/wordproc.h diff --git a/ex3.cpp b/ex3.cpp index 50aa22a..e22db87 100644 --- a/ex3.cpp +++ b/ex3.cpp @@ -8,6 +8,8 @@ #include "ex3/Division.cpp" #include "ex3/DivisionEuclidienne.cpp" #include "ex3/Trinome.cpp" +#include "ex3/Puissance.cpp" +#include "ex3/Racine.cpp" using namespace std; @@ -29,6 +31,8 @@ int main(){ operations.push_back( new Division() ); operations.push_back( new DivisionEuclidienne() ); operations.push_back( new Trinome() ); + operations.push_back( new Puissance() ); + operations.push_back( new Racine() ); /* [2] Choix de l'operation a executer diff --git a/ex3/Puissance.cpp b/ex3/Puissance.cpp new file mode 100644 index 0000000..b679f87 --- /dev/null +++ b/ex3/Puissance.cpp @@ -0,0 +1,24 @@ +#include "Puissance.h" +#include + +/* [0] CONSTRUCTEUR +=========================================================*/ +Puissance::Puissance(){ + this->init(2); +} + +/* [1] Renvoie le nom du type de calcul +=========================================================*/ +std::string Puissance::getLibelle(){ + return "a ^ b"; +} + +/* [2] Effectue le calcul et renvoie le resultat +=========================================================*/ +float* Puissance::calc(){ + this->result = (float*) malloc(1*sizeof(float)); + + this->result[0] = pow(this->operands[0], this->operands[1]); + + return this->result; +} \ No newline at end of file diff --git a/ex3/Puissance.h b/ex3/Puissance.h new file mode 100644 index 0000000..2291472 --- /dev/null +++ b/ex3/Puissance.h @@ -0,0 +1,9 @@ +#include "Operator.h" + + +class Puissance : public Operator{ + public: + Puissance(); + std::string getLibelle(); + float* calc(); +}; \ No newline at end of file diff --git a/ex3/Racine.cpp b/ex3/Racine.cpp new file mode 100644 index 0000000..a124649 --- /dev/null +++ b/ex3/Racine.cpp @@ -0,0 +1,24 @@ +#include "Racine.h" +#include + +/* [0] CONSTRUCTEUR +=========================================================*/ +Racine::Racine(){ + this->init(1); +} + +/* [1] Renvoie le nom du type de calcul +=========================================================*/ +std::string Racine::getLibelle(){ + return "sqrt(b)"; +} + +/* [2] Effectue le calcul et renvoie le resultat +=========================================================*/ +float* Racine::calc(){ + this->result = (float*) malloc(1*sizeof(float)); + + this->result[0] = sqrt(this->operands[0]); + + return this->result; +} \ No newline at end of file diff --git a/ex3/Racine.h b/ex3/Racine.h new file mode 100644 index 0000000..d30bd1c --- /dev/null +++ b/ex3/Racine.h @@ -0,0 +1,9 @@ +#include "Operator.h" + + +class Racine : public Operator{ + public: + Racine(); + std::string getLibelle(); + float* calc(); +}; \ No newline at end of file diff --git a/ex3/Trinome.cpp b/ex3/Trinome.cpp index 783d2c1..2c02cd8 100644 --- a/ex3/Trinome.cpp +++ b/ex3/Trinome.cpp @@ -1,6 +1,5 @@ #include "Trinome.h" -#include #include using namespace std; diff --git a/exec/ex3 b/exec/ex3 index 23e1d119173a640f2e4351b7706e630b86791e98..aa33169a07a60c1a65d2e4b231dc814a7c4bd3d1 100755 GIT binary patch delta 10901 zcmaJ{3tUxI)<5U+P!Qx^1TI`&7Zd^?mxqWbnnwla>X4y=Aqs(siD99VsY6{7OA%|( zO-=drpnlajel?@w%v9qjiS}?DL#MAy86$`6^2o5rA*1g1U;FG0M9u7K+@P-9to_)y+^%;d;4)qkH?yjCZmRU zgXIqp{qfhr)_W$XJ&iAThPb(x-}k_3_J-Gfw$eLJ^bcesi5Y5 zwrJD@bu4>ulsRM^kEdUn78h~B1J^kA+9Z=xF15KItaX zTe!ZMbXr**O(@75`y^ib2qz92+#r5%|n@KO{dNk?5 zq!)4BLV5`4*_7)r`ldH`yvWmFZNh5z&Y8s!+O;?1e zYUZLjRz_HnY$Ej#8J*{yZk#>yWUYXWxyPZy5OX}*8L5)-c3$?W;Sbg#b(*G~4Y!1=0`O$u7(djbnn zcqJw?7L@MYEWB>?u?sb&yRi*~ zS5FdqFF4)ng79i$z9DsnnO^MqkaTqeyA+aW*fWy(S~3j_MzS2s6t$V{vZSbwv*VU1 z_Cb^}A`d%Gglb9BxOj|qHI3Tk8|+|UxMTe{E|>kW+%MsF;aI0=Xm>A>nO~A$3*;_~ zy{1_b$H`c8fo!X&GAiP%iCbRKTu1Y_1gBB3z2-sZaXKEHZ+%VPC*b9@*JK+x*5(P+ zf@j*Ro7`&$)LNw`xBY8B<8AFVnS`0`&b>HAzVOs_5kTZ+It5cz;AEdqgLzC^ON?laPPZ$wrJJMfbGpeTkf}H3!?K}Z}0Iz+dZr;G{`(-z_fDEw6ULuG!EEO z2W?BfCtE~2*2J+sOu%uvDLOyvak-AsEu9wA&g-l!ENsmJRJYgS9~Onb{ju8`>@{!O zYujKu~L8|5J&Rz(gHqTDpd7^vEp}<}@(Cj|hj^1n+ z?6n1TJWz`sh>t@fvql8Rp1=T9XFjF=#QZSs>@?9 zsd=^%V}yD&F!nr?61k~ zrK6&^CX+C;*SQUm$f>tBbAWu0d0OKQ0oPcPb&}y!H!HFRv46w_vR&39gZ+!fZtE)5 z=Smm)!Vi?@I@T~gkWGm9YpjZPR}CwY8Xq0IPYrz0NxkLA!H5pM_1PZ_IEAfGr`ZL&+VWoWYMWo=c4FA9NrB-F;a1#0ADgrvxFjq7 zv!qM*x4w6yhd<|Qm)ZJBPn(LZh1QkI#`PO2;#S5hR_g?2vIR1$&7H;CEI9btY+Ec_ zZJWc|RHLH_gG;3_OvjS~If+Y~urChP?XL@zcH?B7j|kCmyFh8zguT_Q+vf!9DC`cU zN;o)!bi+d7C>)f7!rmLG+w+B=wD$DE*i>6 zcOW~oA&`BRFec=wVGd~-rJG7Omfm+Sdm$m%Yrx2o6H~oMitc2munmc^-f4sCi;1z0 zBB7?;US6`HxZ=JIXhscnOYg(FD1?0EqRT}uav!w1Tmirn|8%)_11DZ~xn2eC1D*kX z1@ytOnfHmyl>%G~tN=Cu>w%tF%twKRz*b;Au-{#AC^sRD!{NU8Q#1tJ30wud2HXvt zcLfarD}iT#SAf01>DV&?xb>9-Q-B`=R{$&9(Gc)3uoW2mnakyl2cCmhU9O41tH3N^ z*5^oY1g85agl9l}1w0DO!=`Qr9tQg0UF0t~KE~k{p%0h=^u-}nh8|miIq1n0U?m!= z06s$v15;41o$SCLfEB=1IE0@8UIrcoy5o#)bwC&gp&xiFFbq$5dB7RK)4)~03&8C_ z73cIzKpXHRFc?oD-M~3OA3Q@=0Ve|Y0keQ-fn~s6;BMe}JeIu*Oaq<)J_K}hL#Tt` zgJ;$J8^|2!0OkNs04snuf%U+N|8}{K02c#40NxAi1?~g};E8xIFa>x7m;*cktN^wG z>wzhK=s9pHuobwi&*gCSLpTW{3{T%TfHQ#Z-(oI-qk)ycFyJ%5RNztI-N07hHef%n z4j6_9{g;37#YAcV^4Kd=MJWdwG6dVFPPI(6F zLYxi%WZqLFq7PvQ%|f~ZJ=!|hqYCVpme1MvsTR+Ah_CZtxxEN>RtBrg&<1K|R=XLN z>$PbpTT#UaC(Kjm#84l%$5q`4G>w}(_G2ZxJ|#4F6>99o*~8P^`JW?ap+*b*%29i0 zWW(x#z&tXYWx?#N)KJFkau2Xr_(HcyHR}`&NQCRsSGwD&Ef%T(^a-0EtDk7 z=WMMmSwCmH2BZT6*3)UBli(MC*;|ix-2ZP#4m1yU>mxxq%<#ks{yEE^Zt+|JG3#@- zZ<-~6PQP5#o&=A9FWL7?;&E>7 z&{$j;gTt-Sp7jvX*xDJP z9*_`gmo7bosJhgEI*@R*AMRqEx&+R9Cg*l_vGKaJxr;5(B}7@POVx;{OB7F+kmPAd zIO>ZKPnXsq-mRQFg?PGj9`SUkk5U~=HR8IFizT)d;hS@qk;Km-1Wp^!L4# z4)@31q5PS));Eox&I*iP_Fj zPm{*2K>}k1rkXT%P7Q2~ThwAud)T*25=`%U>aOo%mryyvrsX7DH%GQLX(Vgp>f(B4i(?h-pEVvvMws(q?KLIo24eQq-AtnkE??nS~knO zh##{GzOAyG%Tm4H<>$Ggyl-LC^Z$gIx}I;w3`8vtbQ_6Z1)`Rl)pE87nz!Nvn&%G; z1#d;axM2avF&RQDZi=rWN9D)-Xr-Qgil}}{17V6$kt6V9Ka(QI;K#hbf@cN)6|bPv z=T-!=vny62&7=ZzNP}1+(tS1r1JYwKHG$cPPiic<_4%D$$D*r7Pbw zjUv#CB9MGT9Y|F0^4(nWAL|V$YsYFlg53HDgW{4ho!$rwtz)8Tbin0(q z_3Y$0jWhJTKxGTtQ*2gu($(V``1s=-8&h&nM3HaoaEiSl}JSj`IQQT(*<=#ST9zbAtHUGNcNXk?r8s}v2r z{8}J$-vpj=|8R^RN9MkR9a?Et|A(%QH{nCsY!%taQSA_Q4~s7rvhGdcUoQORcDQAv z9_ROQdRuZ|7lEf7pMX2T zqc8J*a-zK~DhyvE=LO#)*6&u)fC0}gxQVD^9P~J4R6-Pa2Ne!VJa|gEElJ~)RTxsi zQ_2@7=)4^MEWsOXIxmN$O2lax7H7Ba|I<_LBN6DOcsk)v02`D>qH5S_7Y&{kmiz!H zH%uycN_1U}#v@D;aUPcb;#|uo9@|P`WZ(zYOOQ;45QTo|99j-a4@V0m3cgdU7&-iA z^umNukpFGKsOt4?;K@HjBoi;f=7XnB$Pr*Pb z)3^Ac02ia6Iqm*mW}QY+y% zgmrhc#-qr`%MoM5(c=*YiLZM{3M6W|Y1kn#7d#Exba58M@JM(+6MURlT(YlE3;x7J zz0C>2{}144Rm)!!UKafOy1&0-6N@EH7(Cd+_n1S%a30efXgNiK*CC3mj#;o$P|q{wXou>qLA%{4XQ4>rgty3cz{8%N;OKpy7|}tMv-XkIqljcpf}Wjr^ra zo-(fq|EI)M#)$acg4d@EHvlPDpw8aj_`T0UQFm@q=BCD`im`5fgAOTo6_?$` z&Tfllt_QyJ$yqXJVe7WWH(Iw$FnHxG6#-b$#*D_@zdEd%?#!1#c>u(n`Jlrv>dyR} zCDQjVj+I{dODZPQ|BhVELaR=iNYb=lWX+#5_s(QnvTX`$*=A)wRK4kwvvjcC#y>v1 w(cLR&zKj#|=rUve!a@7oWc0i8(PKVCs3exMqtr`wGnttlnA&)D#}xJd0V=_r-2eap delta 9559 zcmZ`<3tUxIx?g+qP!KrhAaLLSazI2;o{CQ_whDIa`VP$Z91BgnzC$y|IwUxWufZ0h z<*kY4TA9-niqloc6w_qJ>z%>!mOnEk2MZL8%u3Da-2b=sT7cADb@qRK?{7W#+6#B? z)JtE`DN(`-L=ZG7r#x8-Fo_)EK*%Vcdr&bwRR|{E+tF zgA@8%KhYEZQrfaVJ>Na;u{SrZvcKX3g#`RG{QU7N8D&j~*TOX7^}#QRAJQ*tGx$Cq zyS7j~$J3KH_^i>aqPE;OQge%16>8ZvXMMYAT7qEI`$qEa{tLAdzQW(GRq=BFbgjDP zkbjg9|1{uD{!Cyp-xJs`4q;F<{1=9Ftf)Kjo1FA?55~H&wY)hnE^|F4ilQ-{WlAk- zbXZYQFlD|?@>V&D0vPjU>-q2=akdvFw>bHQ?hKay$%}dnh@!Ts;-2ajRX;p?^FQ^l zNA*=AV8bJBL6J1E=JOuiG(J8gh_?lu(d_*F;HRRfi&SZt>=xB-c*gJvA?aE_{!ECS zuY*NZh|A+DZRzgX>=!%A$y^(1i~X9iq39|-+5LntW8T4`5PAEA;c1C8P$POF37Z?d zD18Enrjcr{7qm_^4RLd=pzj)>(PY+KE$Ev>`x0H{^?Kmo8ZoFb%@so73ehy|%_V}q zKs4pwyj;*95sjW>&2B-TCK~f?iK_DABcoUQ2XOqN@eHlISp^ zt2~0Sh#29-s1WpHL`M)^BIub!+lgK-=&3|U673fB!$e0BJz3DBiFOce2zmt3(L`qm zdLYp;M0=cq(VrNx#IOoFf#_aDGeJ9urX|tb_AjqDvvpkg*}1OrE3VSUw#oV9>T0V~ z4d$vlZV0Hm=rCB*LomFxz!I0s*unHEZdTw*?FVp`-VSke%FT{zK2~fU{D5g=dG2 z(<6W6OCtvHLt%Y_Cu8DB)r@q0JuExmQ>l7`r-zTz6YoOR$#;bh3!aTRCsnQK{Bn49 zz~@r+F7F*NPRrm+B4z~BOqE(~Y5e1e?7)9YE&n?_((ckm@_F_d!Nr*1QmsCX*V(fJ znx$GO?-BWmc8k9i`AG0UEDNbsoyG&AvIA~Qt$IEoszTrG&o4)1YwLNmBSXLK$0s=Q z^nHH3(lJ>3n4flJX}{-QM?6o6U0_ea3Ot6MWlf8}^Lkz7CtT&1n}*)zuf~SkOWI{d zhssSWRLzRWcBT`iVoS5dnEJhhU{oy zn!%3MVwY^1^sU!>w8UzN(Y*qqF0T@eVAnmH^D14B*SognRlCYRp|KA{Hm=S1-|E^N z>e@P?%2j^KRsIj}M@Rd$yJPUMxuDWCc;qI0r$R>7UxILLE%3lfcnJZr&Cod(4>P zE?`ZUl(yLeUn`P=Um?P1Hy+ekb_&Giye%7Q*VqBB$J=xJA0M9W9PZiw4Qv<6=6(nQ zxmU=rtm&3=Wk$^-XLBlqqt2cDBzAgqa``Lk(8O;o)(wP|Sqw(9H19=p3qp6c7-d?x z;-RzvO4L7dVDvM^C>|C+!SZ2Sr!3F6@#XPhmZ_Av>c4_-IFBELGsvg$@xA9l`??R! zW-$-ynqoENSAL!{BCDpYZ9F<5J>uoBz23u4>^et>=eyalDhqb7gI{xZLbl)Xbc4;| zmlKlpKeh3|-l-8wp?lL}%WK2RYjc(7wcWH>^V;~?)CgYK+pS;uy5>~xLQP+Hqb8-# zKuuqqR^v|ErG<~YP8}g4zb2}6O*5`@OTQ=ds^*$C{Q@*S>kcnX{!ricRn5cw>ovXQ zDvwF|DKzCv*ioe84QNPR)8a2{Qc{;{dP-x>%W3m8{cl&eH{I@o&5y@rgvXXRo!C0J zrfvj2GCuig=4YNeAApS_>_#7e4Ne!T+8gqt(m?&G&6>0W+w4znWH@=XegCS zktXIwnMgb;)l&Yl-4L`c^#p-Oo0RW~Fy$dqPsyDbCjUUVi4LhJs%PWva;6!0A&ZJv$5lfKNu9&Yq{Tfq1OFbI3&c_6(79=wV`z#YJ1;2B^g za3Ch)5#T1^MPM!P9x&-EuQw6rwKKp%px%Ulz=goK=^S?r2?F=sK)hhaZUBQqJdF8Z zA!Q-s2w)5n834?MViE8ja2N6MhC2Wp33OmF7XmARWx&J0-M|aLlfYZRMqmgQwlChF zCBPKmHsE;Re*qT*8-ZIqsQew<%>m$T;5pzByuoe(Cj-Oqo-PAs0rvv)fepZ7;0<6U zFzb8R1IGf-0j)nEao}KJ3{C@UfFps`Ksp^<0j>jfzm1dc%cvxxas>Dw@FLI!ya!wa zjKRrc4R9pz1>kJpHDDPq=nh&A90oiITnlUjz76yZLeBsbfhU1<*!c)p2y6kC0b}oa zXL)y{GVCrK0LKCwfir==7^CNbi9jzf7nt%R8~|4W%YdhWZv%e>o&gr#Ls#R-d=6L~ z!WRrp(2dXerlDzm>@%;|%HJQ_Td%v$_YQN6EyRp??{lxW2*^f-Sbw9B3HH|ugSw&P z=}cNie9ZkNgzfT$?eg7VPrSrO4@-7dTMgzD4M_!d^+fRLw*a>Dfxe4#_~v1;`tC~z z+e^QBjh_arzQnH$>(yh6Qd&bwQT~;1aQYJ8HQeEM09Bp8mK|*gLoM>M^j4O`e?2@_ zpLQ8ay|isYVI359D}@TvQz4e>6;g8em7(h3wvo}6Mkr=r9gDnP&f)(yB3578z!#0^ zrM)2(#zXapQrIIrjise=7rfWen2wI9YVU}A$S-4!J=j_Pv=EDqEQZ|u1)A%yoP+z- z*e^u<135f@1(v zAwMVNe39Ysza?BD5r-uoRUK9*2+(twX9Zt&8&@Y<$;Ef&TZxW&01kA zf7qF^K3CR^1?UF4sID!7|45%N)8V{(g8T|g;2{3}sK_GESd z)fFc99IA_juICo2GZ8nebKFTCal^17PlPO%~HcpZpxAeB#@I9IFY`zFR|@A9(~ zb2P?nlj3akJq)3Mi73i+K5A0Bc95@_6o*T@?USDG>2EQFBtl}6#o#?BxAIRkYfZ+K zdR;ruwfuBjwZExWjcHEhT|Nq2cc39CH+qQ5RQ_CkdcZ-+J;)E`4-J?uQ<%>0!_FGvqnx1mfdLB{sSaD7@@-~oJwQ$Zh$ zm^Q>#E6G|hhv=>F+_ZFC$Hl17#f9kcY3ZR=gA74d4KlfBdT{;GG}~hA$y65S2w=4} zqaO8WS|mR{Jv|_Did%3a`JL%GxZxW=+l@tZ<(IhEW1lk7xLx9!z!4{Wd{N_0s)(ObPzlEPJNv zmiwg^ruyf8zLj0%XJ>`S*qG{*`{kkN4DOiy26e*hr=l|CtW`>BsOT&h&6qNWE_#dR zJfzp!`2IO_2X2)U`vIxzm8xpO(_I{u1k81fS=h!jK6-ANzA%TcoJ--NewFUnB)>ky zHV)mdpqqej*W&qOze@AuCmZB}Im8pk8oXgbAy!{iFUn=KQ}Wfv3?2Qc{1JR|=a7En zWM=2Vk4H-CTSLw})++V8rx;{Df{EP(wNNZm3cNsmj;Vap!KVN%eT9LzSSQOz>6YBH zR9dNzz4;_U`JJ?~^)m!LMm%v)l=^fNNCnx5V!;cRqI7c_f)O za{{Q)wUIflhM-r7Cl2}ii+Oe}m!5vpp%co_YCR_`Mvc;R%C9@RrKR$m^fIl#A?Qr; zlm`nW(RF2TYws+c3Cd$P-!|xY0R&Z8hd5XWT|nA zG+?Q2E7bbCAozIqSH(A?Ca{UbkiljMe29majd~+1JrepMe6qkpAvdpB#L>rMhdn| z149myQ}SO0pQebq*HV+bMmpjNhR{rv`ah9AP01(=ma0vUV)Un!&Lx`fd&2I?hLjR{ zM>bUT*fVhFa{)N;Y609`k)0?DVpOHol9%6#c(qi8VVBN0*l zLmH?nP-XCEX|ScAA@l~C>dY5!AquRnGS%i02R(?b;#~)}Zk9;}A z!z6zg_%PugYqr=)s8e4X`EDsSA)j=_=&cmm!R%D1Aw(*h?ckI59dh8ErXl;Y;hYCy9vcE2=~dElc9XR;EjnVgKvwn~Ff<=Cm# zvrY`ywzZ+gx)GIe^rk^6|2;0~a`@G?hQustU;t5h(3_dlxw#&TSCiO#QGt?s8 z4L-eyx~`}{Qj`fFLW;&Px_j(gz7+i6pAEoIGRmngS@pNW56v0B2UN{dfEu-6snk`o zhf99fv&2!!?|P8>fjq*`bU6!`$V5XivgF^|*UTLYQ)n7O!G(s9+u$-UOI|_fHGY!*GrP*=SldPdx?c19 z)lMH&V))lj|H%8SOR9J%`OJQ;W|rq!onL)!9-p%Q1OD2oIG$U2 nnBVr;YZA+5`0|q*Y<$$v*xi)gSGzy54Z6S diff --git a/exec/tp1 b/exec/tp1 index a7d6eab19f5e6bd13663e28a860329bf93742ab6..4cbea66051a0f99238601d3c35897221fed787ff 100755 GIT binary patch literal 30987 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 literal 13907 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 #include +#include "tp1/wordproc.cpp" + using namespace std; @@ -21,14 +23,29 @@ int main(){ /* [1] Demande du mot =========================================================*/ - s + cout << "Mot secret: "; + cin >> word; + cout << endl; - /* [2] Essai de l'utilisateur - =========================================================*/ - + // On met le mot en majuscules + word = toUpperCase(word); - /* [3] Resultat + /* [2] On melange les lettres du mot =========================================================*/ + shuffled = shuffle(word); + + /* [3] JEU > utilisateur + =========================================================*/ + string guessed; + + do{ + cout << "What is this world ? " << shuffled << endl; + cin >> guessed; + cout << endl; + + }while( toUpperCase(guessed) != word ); + + cout << "Vous avez gagne!!" << endl; return 0; } \ No newline at end of file diff --git a/tp1/wordproc.cpp b/tp1/wordproc.cpp new file mode 100644 index 0000000..86ff683 --- /dev/null +++ b/tp1/wordproc.cpp @@ -0,0 +1,62 @@ +#include "wordproc.h" + +int indexOf(vector tab, int el){ + for( int i = 0 ; i < tab.size() ; i++ ) + if( tab[i] == el ) return i; + + return -1; +} + + +string toUpperCase(string in){ + // Valeur de sortie + string out(in); + + for( int i = 0 ; i < in.length() ; i++ ){ + char c = in.at(i); + + // + if( c >= 'a' && c <= 'z' ) + out[i] = (char) (c-'a'+'A'); + } + + + return out; +} + + + + + + + +string shuffle(string in){ + // Contiendra les index + vector indexes; + // Contiendra les valeurs + string out(""); + + /* [1] On prends une lettre tant qu'il en manque + =========================================================*/ + srand(time(0)); + int index(0); + + while( indexes.size() < in.length() ){ + + // On prends un indice aleatoire + index = rand() % in.length(); + cout << index << endl; + + // Si index non utilise, on le reference + if( indexOf(indexes, index) == -1 ){ + indexes.push_back( index ); + out += in[index]; + } + + } + + return out; +} + + + diff --git a/tp1/wordproc.h b/tp1/wordproc.h new file mode 100644 index 0000000..ef3eb49 --- /dev/null +++ b/tp1/wordproc.h @@ -0,0 +1,16 @@ +#include +#include +#include +#include + +using namespace std; + +int indexOf(vector tab, int el); + +/* [1] Met le mot en majuscules +=========================================================*/ +string toUpperCase(string in); + +/* [2] Melange l'ordre des char d'un mot +=========================================================*/ +string shuffle(string in); \ No newline at end of file