From 315f62eb964c7cbcb10bc7d807d05094532dc425 Mon Sep 17 00:00:00 2001 From: hugogogo Date: Tue, 8 Mar 2022 16:51:12 +0100 Subject: [PATCH] d06 ex00 fini --- d06/ex00/convert | Bin 50296 -> 62896 bytes d06/ex00/convert.h | 22 ++++++++-- d06/ex00/main.cpp | 40 ++++++++++++++++++ d06/ex00/srcs/checkChar.cpp | 11 +---- d06/ex00/srcs/checkDouble.cpp | 74 +++++++++++++++++----------------- d06/ex00/srcs/checkFloat.cpp | 57 +++++++++++++++----------- d06/ex00/srcs/checkInt.cpp | 32 ++++++++++----- d06/ex00/srcs/convert.cpp | 12 ++---- 8 files changed, 158 insertions(+), 90 deletions(-) diff --git a/d06/ex00/convert b/d06/ex00/convert index 08780ed72930750935570c3dd40e43efff9a3cf1..783618fa9f3829f5f90c8a38a3af768cc60bcf9d 100755 GIT binary patch literal 62896 zcmeHwcYGB^)b<1znlvd&QHg*wC8iezsTV>op^3mHq(CGEk{g=z&;mq?bWnQlRiuVq zq<5qW2noFtYQ8gNcg`%izQX(dzQ0(_oHEaOX6DT7?B2Ue($`k6W+oRGVjP*tcZ6A; z3kgpZS>b+1Dj=#5f06^r&&a1FE7)1MPt;ct0&2yPCaDdXUHUVFWO4qPgu^O7kvKyd zJ!F!~x{So_t-@wxjZ6iv zF9G1*G3Jesd|YQfb`+YJtGduKE=vGG z{tT*CIq_$M&SZq2013{>-vp9fA_M-tPWW5GKr-Ta3>+ExH#@;^cEUf$N&gezWXXts zz7w7zPR474@n*y`+DZRcI^mh*WL#f4;lJU8C&tNm%R3n_TZI|*zk`!Jv~bdH3n%U7 zcEU5kNq>@@_=`h7UE#-i6mXKCN>2QBob)r;37(y=uGU7u?%|}L-#WoxbkgozC-WWy z{2!7cq{?B@dOpDM1NN6VM`*~GU$Q;Lm)PwcqGF=$agN|vhuu!>wVT$rhla(5b%=;_ zgvBkQTeD!c?^3{ZvzN7Zg>Z|ZKh1^L;V z)OFr&kheX^$KKS#ZnHrf&T&o~_6ds(jtjFj2!Iqt$Mdnl5Tj#aqk<#t5s;i<;64{{t+>8b|4D#t{olWF#L7jKGPn4;StfH z_V9?CVUG!CsgGil-@UuNb69L#OmuK$grkSOt2^t+JG9{!5);)qI5y1Iq%I`n z-7;R?gLMlCyaWOC*VZJIb8$6XsS)qog4w_S%^=0XZNL{Y^jgfGWx}MNukJS&w=IKp z9nut5wU3>h6YsEIjRo@d>m#DO4c5ZDwCU3xHi~F5{&&cyZ)8|>2S-PlznI84Tcetg z7jxkU!D$X1d;1jr`^J({?&Y51YY%ex*n`3x-B?22VMykA5EW%~!aF1;-of+BMkv-Z z)5LOSnsqh5-Sz28{0tbwP7!5*f}gZDke0Hz%`&l2<*`865v7X z&7!-p{h>)%TznL-3^A?^a9IfHWDn`s$sQgY5lJHAI>UYjV}ac;*dFW%>mFeku*1L( z(i5%{c3@|_Kf9nr1xG}aTGgxDz1-YMt$MYqRkwS(d7GN2n-8hpvSrn3we22mUc%k7 zC4ePF=x&}K?8=o1?rYgk7AVDk!e%A&WrqJKFI9b3?k6N0AXuchHx^iaHH3R#7ee9M zZCs}tmG1EY!^eS-9WKC7Le{&3T`(ddH~XaYlk~+GjmW`1kqk2NnIT5-vG`-lI>D7V zD;X{Ej&ft*qfBNpRoY$BCcqs|CNf{f8=squ&pVwzVl42vQGPx${Egy-zq`f1$RYgw zEdIXTgny{TpR5x}7XN@@!av>OcbEOlF7G#tej2u`#Xq>K;3;eINB0tb zcdLJZ@cUc*`-Tet;X|%mVQGYfo5yM7|IG9fatZlMAb$$-mqh-1$o~cMry+kCj}+u*>)kl+A-`N|yebX( zS=;6z$HjccT(Y|C$PWwOJn|ubPSZKbPr+oFIR0U3^bV>UZ2Q%7<88)mapCAA;7 zJ(=a0K=XOqJv!$Qv%I!?d zW=lRbAGe>c2Rje53AZ0Gn=SFwd#}Oq#SLb&rJZ_-+n1TmmUQZ2ZvVw>wv=k`8kv!$Clo!i@(&6aHHC~mK3He0Hx{kXl7*=&iXcINg%X0xT4+K$^Zna!4D zY9nq>W_D3#SK;;;W*1|&JGX~1n=Q#yS8fkrHd~6R`MBMa*=);BCESi>Hd~UZ_g=B_ z{|I*YD6skAal3Znk+y+}mje^7-fPsfUJ_jxPe@==ZZ9q>T?15lp_&l$C~xr^tftZ= zFq#D>(a|6S1JVK$|8W$7C0LZ1ump3rNxu~Cmbdso&fjJ`TXo8Y`0p7o$)^dYDfb%U z1Gm1;9GG}7aBE8CK$l&CM_xM$1L5C)2*O;9&>3I9N=0D)N&MG=36(}d0Q3y{lPhp| zrS)K?EClrSC!Z<87h2&M(W>C`f@_u|0B`01g6!?S$B zE;WIPwiJ)#gx-r?`m_v8vTX@W+?_HAQX4qjHa##Q8BV|Kfl1A_Kvi;J;z3sX6cR1W z-6^A50|T$xosw7hIYS)i>sU`x%LH%)_f}xM23eAiFWi+d!nugBG9ujkk~hRdOCa)V zT$g=H^0^N;J&eYVXwrUA{pyBj&LVx9PP16j6h<^F5RE$u9gFmqI!y;jb3{NOX}eQ? zL^P={)S&7knh$lF5|U;ZqA7`JW+Ixbh-M$x&D@-i6}hR7XwJ1#x%mOnY(aX0PBT%` zyc7^VsBws}BzDO@)P^|7Q0Ml{cxt3mZZH0O~%L#H_! zEpk&7(X2u=o+xxY(p%{?Ns{K6fbiTzBAS~|)Swz7ngTjaprjdrXud!+vk^^pM6;jk zW^OV|8XKay&`jl~4WikK^g%k!<|vVy*8;)^H389lghG2F{X3nehot!((KJFdhaRik zcp;jnTsH^hEonLBtL{lBnYxI!#)H7}O_-W(}h8Mxhgt-dd+wC239w2+vJ4qPcxv z4XQDsDWuaxOPZe%O<p7t!QIGzYnE=BAvasfB1RHBz~;Bbx0_-;a}$hcF5OYN zsex#+>onaYO@BmF6wypVG_R1pmE+CacuJaY5Y4grDmP6~=vt)r)M;*qi9tOS5I(38 zh~@(n8iRB%oo2qIS&V3Gh-Sxam7B7N<`&n@L4`<~FhujZo*GndMDsV&=jb$_Nt(|P z&F_fD7llqndRv|5OsL4sDFNZR>5ORZ-co}KLNp)iG-D;rC`3~Z(ac9Qxe(1^uA8}O zC~0aVn#*-nZh{fbPNXO5G&vL+O&h$c6p8G&f-A$_$@^R1+*fM|BrQMs|9&;>}3(rKQw7lXPcAbe1L5zXrx zYEbPFO=+EGg`}B=X#5e)?}(-tqPfU*GdGcvrX`}eUt0~TGom?;^ocr68A=O{4n-D~EIaTGRCZfry)BGxF5)jQNh-M0+Nk{s2jyH4DQqojJ zG$#U8ZknRdbx7}}(-e?2j|GGe>Ssig8-;d3x{pqCu${=wQbbb=(d5FKtAbp-rQ$y0YBAP#HsoeOZ(5Xmor_-d{#h}gz2+vI{qPc%v4XPQU zDWcP?mo#G#&6kK~A)?8HXpVB-%uT$csf%c?)>MNEK{UIOK3u19mo!-r&98{&6BODH z={0nkn{7pIHVFvNO>;zZ;+o1$0HS%tb#qX2B~4dElNZtajA$MpeXULtENQ+*G<$3+ zH?>gcBBaOYG@nSC6anFb>W^p$3JpbiS)Jxo8=K{`!NNwZ%-cy7WF&DE=FP=Sahmrk>b zJq&=49)l3gXNcxkMB{>Jc5>a!%>YUB9ill^UFD`ZqFImhJ~~Y$N%K@d_@G81n!G49 z4(Wb64SzHNgIbPgY9pFGS5$7kLNxcdZVqY{dl&#T5r`%eqUn!l{z3WzohDk+lt45a zs;S(3gF=5pdV8IwoTND`AUrn?MDy^n8dM8JQ%tA%hkc6=gBpuyDj=H0h$bJRInH%6 zH!~zneMEDusv1-nqS=e|B%P*>q{)hCrXiZoQ0M@p*VJi>NSZAI!gJFS(VY5Q<>p&N zlg@Q>P$$^K0LV>uMDrn{8HH#bA$^@rGg{JkAewzuRBmdc&?QLkqSMruG&cl<4=MrC zWJ00gNH4F`snXh3jT+cC&{8kek+s=5b{;CG!;&?M z>56C`pI3wW9?^WN)0C6F8INebMl?$iO@2gklIvz}uCa#!(3^&cCZ(bpR0l-!C(=ji zG_xd4c0@A+(YT_}fk+S3Y1&DetpdVx(+bg?Ij3?{3DLOdG^Hd>PefAy(TqVfPmsQz zLHqZI!#YWlZa?aAetG7h9a81TsL!5QPNaHG-m@;ZdxIl%}5`h z)4XPnCLlL21cVQ2ETSoZLc1aTTb(9Z(yT@_^%2efGb%Ukh~^R3%|Q*2G*O5qE20^M zXi|~BM5n1CX-XrSE&eJu-=WZ%NDtR(vPznZ0>X3C9nm~Jtp@c2qA9M^>|swhAjK0A zjR&Gxj%W%Zn$ui2b2C`dG)6Qx{M4W#5X}LkkJf2yk|rmjnT2RdpwPicucOmsmNeT1 zgy*I;qB(m?<)$*C$*j|CV^26BH@y%|Aw)A4(WD`LBgdP$=`U$~5Y0hfm7Dq~bOqAm zb(+eO=8k~yK@CAPSyAYZNO#j|vPznHh^7jn*>Y0lrX-@d&UJH82ib!X$W1#$^UOyL zsym`NhxF+>%{WO@1ktQSG#)5)9MZqnY1&AdqXNQn(+SbsIH3mB0MX>vX-Y_%;fSUb zqM3zgvLTv3xo+m>I(tw8xv7C@&U>rev_>?^NFS)vES5B{1cVQ2JfbOtLVF;+l1|e_ z(yT=^4H3=3<0?0vh~^2`%|ZD}nixcr9nlOyG&hmHOs9Flp0_}5$|9PrUMe?LQ0Q!= zchqT;CC%Rg!gJFT(L6h*2Gs`9e6G_Bk~EVMjTfR>iD*7TG=Fj3%uO9h6NG4Pd8$Em zLNtev{)GgD)6YQ}KqpUh%{)othiDFasN6I}p{tPIO{WOKA5F!mFwo9+Dn@Dh~|a68dOh2a{=iyb(*@8rWm4GjcB}3=mezypwoCu zn&Se(a}$MVZXH&GYJ_MC>NKB9nj}P18qv%_G&vB>0j`_5$tr1TBASa|tK76jG~19q zSf{zm9Lx|y3HlBOA=xl=(6DhkmYLHanIriP@+gJ|XB zZUN!BX@_Vo9#FZdj%c#!G)LIuKFCc!L{kLOOhhyNF)J%_2lo1JP{XuX0lc(cI*^IjC#waUbL+6w$o; zQVpsXqPc|h**eWaN%JY9S&L|VQ0OG2x6x^$CCy0z;kk)HGCnnPSSbMu5fHH6#*BAUO;tK76hG&_(!RHs=lXlR3Ak1YOfkpFrxWFr&%j$enT{Vh-NLKDT-(=aNW$!G)dC}(cCMm z1{H&7jv;-5PBT=}-&?4=M@K8UiO?qiHs6L41GScVjG}k3faYVBY(fFazDM+{L zG>0Y4X#wH6>4IqP?NWnkif9V!G+SkEMkAW?h-Lwz$&F}^aNW#}v2E2sG*`Y*xoMAR zb|HP3PO~Ubq&PF8nTlwNq0qiauddTfm6yAX0>X3C4AC6lsdD3wXkK#N98^*r(VKWg zlLyfxA)5P0U!&9XsVivQ5Y6sVDmOJz=t87N>ohU)_WHVj@Im!MH0e9kph6H$8J(tG zebJlgh$aBhtV1-PAeu{DH*?ciek<@jqIpnK4XO*GIf3*^I!(2PqBr>w%_2lo9)ruS0h35r-1O>gd&Rf<<{fyb1pM>KolpcOZa4mo zu4?aL5ew(V-2k(4`6*q(e(t zp$Q6FR);>@V#z>D1%1U;GXn>$& z&=OW?e+4bAL!WN8WT3f%zTm2vf&EtKmkN4Vht9ARS zw4n}lwL<$UXek}~c#|aqO%?PRSIrFUvqH-$=s_Ji%?f=D4mqq@I@Do>9#hcnI<&SG zI$uHS>(I}v(B2AKLWe%wXvshm1%1j@GXs09&@u|TUx)r`g}wxb%)ksC8f%3fQP8eB zw3Zb*S3&FQ&`+$;pA^(phu+^{$v`6oeauxe1G}uyFBEj24xM6!J_m=)z%(7&*$O?R zpbi~svqEPpXl)%@)C%pPpr7f`yX!3(XrQ1ExoT!$hZR~mI$1$0>(G2wXpDju)S>^Zv1Fizf~IoS%)ojpw1|Rk z)}bS<&^zFe8TdtqhFYQ96||!c4X{EdDrhAgn#T%_QqcT5^vY^W2C6COb*`EjSZ9TP zte_ipXp$9r3mh^7qjhL|D|D-ZhU-v2D|Ebqeyc-sS)rX2G@lOrdzB>vRTT6eu9_KG zYlRk4(DgcWxD|Q>95MqVb!a;)bc=$9>QEmmbgY5~=+K;2XoQ01(V-VtS~BpRf?naO znSs?-XaNOXr$ZC1&=hdU3?%8$wpQpS1#PcGy{ynN3hJjrvs|=0vO=$dLuMdRhqkgp|4`7jI`nHR^k)V2(xF+b&=3X9u0zi( zvt+FP|)Q%w7(U42^=y5gLG(fD|C&5w$h4Y zGORWVnn{NqvqC);^b}Xk49vGevnl9e9opLpJqHe%f&MzQi50p+L7VH)GFIqd1^rTo zzFcId;13=rRRuszbl9LI)~n zIUV|Zp(O*~E9h&kn!`F|g}N!|F&#SF3eBvb^L1zsEA%utWCnWc&<0lM5(RCdLrYqr z0~EB34ozEN$v_JQeaTfb0|%_ouN3r%4xMR*x+v&e9oo$bJqZq(fuD3}Ju7sPf;Q5j zpIf2*6!Z%n`eeQ(1I-llIakdL{Aq=jSI|Q`bh;Iq4h}i2**Y}d3O%l%J#=UtD|CT^ zHqfEPtn9 zt!ahMQP4U%w3rpzQ$dUC(0g+%8EB}WkGN`PV5b#YNMQ62u9_LxZiSXm(A_$8q80iS95Mq_b!e0o zx?e%N=+J6b=nMs|sY5@uLc1zxF&%nqmL&sq74#lg%?xa{LR}Sfrw$!&g+2y{%)n$F z+Q|ytr=T%9w2BovO+jnu&_Y(ILqUt^&>J%?8K|wGcerY1V2c&{nSyTDp<}Jkhv1MI zn5aV|tk69Q8l^+OvqFDW&}urgfE606pdahdlo^%`)Kbt}Ts1SW$qM~MLAUDAF;?h( zaL5dd*P$J(&|M1JNrzUnLZ>Kb6&?Da71~)r3js8R+X*{b{?KMS`(@F}%0%fatZFWnY?x%qMypH%2bYghLB)C+(Merx(FX2H8ISEi?@ zkJ`(L;6WoHTU_A%nG{%R>4KgAs`J3a-t#TL=Ny<0^LM8!tpKK!jX)EaxD9^S`TW4d zU4ed&|mhVkoX1e4w_O3obZPc{!422vj&pf>WZ}A<>1wWKBKHTR!<=-Vbe$M1yvt!IW0eU`Y{E zLN-`RH0UQOP6)H8GDoV(b|+F-U7wX>wzkeP{WvB6&zuw8m!G+ajXeV~Mu1(?h~ zJ4av-0+UznP8t0Q-ip)u>vX$##;E&qrb07Yy0SHW4P3BY3}hDYuAXY< zbaO`Ah1iIO+g_HmrHKv1^n8Fk0C;*>ZC`9^65}7Sxfo7{H+z(L5}MkQo}Qk_Cpj@6 zt1;8fXYvhrA7^krJBjgE6PsOPxgB1maH8$yaN8wlBHD;afj`htIFau&6TmmT*`?vO ztGpLwGJx0^#P(9}5bNUl<*+O^yF$To)eB&%IDSiMe|Ap8E0|9`I{uk zC(OyxbOG~bSLhq??*x5Nay%pG$f}bn9cvB*7ep_jWyB$2elN{rFmL)mNLvvyorNr7 z7`8RMgieYjdRl~)kYR~niVU28Ei(|#B4-HLba1jE&z!_FkW)qliQ0$kC2y#$0VeEc zwwKJfE}&awU0Jh%UPc3yHBd!RRF(}?6;aD%)B|CTk>(XJVdoMJ>=KdfWZiD4lN*fl z%cOX_v=@&w-?6PN86NY-1SFB^aQ!q-{*Dj>yHUjodB-Nh-cx{I{gQkN%h&~0yuZYM z$^I+~;&C;2;;jqiGlpZCJ1~*YmN5Bg@B{P6T03hA{$xvj!_j~_64G*ZwGw9A0BfJz z?971cnF^~Sj=ggZZ4_aQ32Eth$Fb2!WKDzeg{aMucf6?O`)*nI8z;#E!8;WWC+DE# zyweZ?-N2CY#vtVc0O0bDU;lM{d(#`e=3A1Fl)vV?hpXm2;v|Tb_XbO$CM5^&k$Eo= z6xjb3+eQNuHwD7VvEB|1AIH3bNrT$)WyQPubUgCxPB{)6al$L=a;9$F4n*%m5O{$O_h z9W00c;m$RNb^8emNh+`^9=s7BcW^RV&vC3xpR*-JUao){p7(BYUN_szZXczZ1px*vJmfFa!}S8plzDJd&l18@R3K%RG@a&$U0wP!f}~3EtciYtv#aFnBFtE6 zwg>a3KZJA>A=Ow&eTG4!5=;8Ji1e3{Wx*5|m|kgeNR$Ov5wObOWJ9X@3m;M`8TCMz zIYev68$!TEa6Qc1N?ZfBiRfdWi}kS`>eNl9t8pi2ZsM~5&NgweDXTlX;nH6r!%dmr zN&2&%B(ggoF!_eEYYcegedaz^3!5RoHpu;>3EQ7oJ)A7Ee?breTldG(T}Qera`zi; z=j1nvsW~N&v4t0rQO#NV@JS^wq4&LX$LH_~?H=mgI_MD_s#|#*a)2CK(ev0L<4=eano>yc4A5;Ub0&seA$v&|y6%id+1e_6f!Iakm z4VtnX_DG)N|KYmOfbogzLI`geUl;C=G%IUDWy%Z&{?FHimTWi|cz+9}*L7vr1sk~F zy6`u%p!Xj_<-cARAj$p2bzvRs=6%&A0)0BI^GNO($AC2@4{y&WH#k`fdD#e(d>VZw z(v=J*yF`S;2AJ0Eh4>z~=cwwdJS zMdAw)+(!nV1f1AW%RiL)S;gY-u=pgO+Ydy3?j~_FTt-cY+LQsXTk_x8umNvBM zBtz^n@!%6at_G};??ofmnG42MN0?Wn`7N0IGLa%eim{N=41>lcE)&Tja)FF=0aFaB z8T20@NtG_thTtLsR#*uJ7 zN1EYa!aWy!X(vKzvXI6MlW2VVagR;fJ$4e86a76}Oys9L!2a#RloQ|?U6>v~9P|In zg=yLdqX)(wT!DGyg~@~U&vIcZBrhm1lvc8T>xXL>rdrZHi@Tj&m=5p_(w1Uemv1b{vGq8JM<))d!cXmdT(X5ZigWuclc^ld z@EL+r;{N0HRrp(~UyQHH|5R#) zT_A(1Ccdhj_@rJr_Qihoz^$(`r&Jya-5GS-;p%bL`1_{y5}(&gd{QIvZq@XH=K>S9 z!>!Tz_#5nR`u@rfZC)EsY~jS`lJDA zNE(sGqzMTkO-VD-oU|Y<$@ioc`GK@1ZAe>UC+$cuX-`5(CW@ zJUzVqy#2j=z5Pf9Q%7!pcS(*2O`k95TE$wwf^-w$mtmALP&&K>Vc$l}h!LxP! zR(P3Ai1|_}L;5$A9Bz>*sCoDnA~60e-##ULLTk`FeVJ`1rZ|dwBbJ`gwbL z`FXJo&&$WxFTmg3&mE)>T#CHC0|Ikh4Xxcm6|`uME#P3PfyPPZ+{P8AAfg$AD;j(Xw}mTMhioPq5FIKdcvme?d=DHht7II zZ~Z*{-2*%VJOcv!{oy+84t;m`^!4!fh6}ep@cQyI`hDWwEpc+4zE9uVr;qRa@6Xq_ zK3~~x_kO*-{d(hfCGXeUTdy~M3->;6Z=E-O5BolEZ<{wie#8GhZ*QG9{^{s_-rhQI z{KM$`yuEea_~-fed3)=;vFmBhVn29%>*XCqiv8dom6Lz~(<3S(&NVv5;o3DgG9uK~ z(W7&iYj{kotD__M!@7sXhD5}LiGYY`hluetD8eISf*m9@Ccb@Sn5goKat-Mi94i8t zX0$>gqB_UK#YG4tYd<loAjg88>l};|Bm7fyO^H-669|nKgmkSDv(XV z-VD+KaxchU;Gc6jJ$)+3npe})H-cRA5A+}8Ymiy85yJjVZbh&^2iY2AMUbVyzZhgB z$b$0w440lwh)ef;F2!dU`&{AIX!i zW}d=z@_x`Qdp}aS=(pv)*n40iz6QuNm{;}+rg5;g*x}N%Q9a(1Y*Pl6b0x(@e*`~k z<1gq>Qfor8*dYm3^W+a#~XCvYCX-`-ICKdSouP){M=S^X`jF9`MRaeSsW zoPduX=D9i4m&NrVivKI9XMe#Y7p||R>gz#$Bgk_nXvZ9X=5QB=VEmC#KLzsl1CGzs z+-!dY)Sra<2k;Y`vc5FuvYi0`3XyKS2!l{9}a+1YAvlWBKR>?R^gW zi?i`eh59;B?`%99p}xgm&c|~O>Z|=r{Y$9N3H;&EUo~IBnT+}RBn!+Z?0Xlqe4H`! zaTVh8oEGz)#osc{wrZSgA7+0X&)GQHzS$G%osDxg)E|QV(b;*i1L`;ZOZ`=-w*mh- zZJejfab|(7#|8H58QM6fn&aFL@dIEVk74uK^&^!lHlOX)IP0-}{DSjwMne4qsLyDe zHDC%xKz%+KM;Pd&TAq9(GgZq|_~*>FJg!Mus^uv=f(GVsADlHXkAFh8`gy9v=JBtZ z$GvKvveojq0uJ!i@?znf`lbIy;_h z&rE-bCx^KHIx{^KPljcoo8!s&EKJ{-g+7lbN3zh=cygZWBPgBIl}w~`Y*#Xy>&GZP z+?8CUbW2xwIhE;?v(gt`$=s~;Mpv?u>wjmZbGwn-S?RcLbbNPmkn69q)1%!qm3aV?D@)oOD|ca)axWKA^9AkU1aF+daq%u3!3q zF6c>aeLyGnBxziqmx~_nNmk{e+k28NT)&fxruQVzbJ06J$>7{fUz3|I{E2MMO(*?C z4siWtZhGP;GBgj}@e>)Fhw0n%(0;whp*-~NPvk7uhvlVEvEyCfASTr6+rl z^LgpcUL=+46Z6sjy~*r+^j2$jqYj2{@Mu>wHnV5}c_;=?oB$g*CevJrCCMVst-1ds zQ*b7H!mX8`&{g2v{0W^2VxO>{eL^pQHRw}%0L17|xt07WO&sJx_J2y#zgaXM_U3z<=zJ_F|xVVx^Z*MKvnIGqjRk+5dD z(o0}1bEStsY!KEBS2}zMOpYsk4$c9eb8E%tbS*eHeNN|q*ek5G&*|S_4J<(qgBVqU zTU$!d5kp~eO3)YJJSD8bCF$?r98;3c1@W7(4wR&q!8%it9s%)>u*R06Nr^ByrRYm= zE*93=Qgj_Sua~0pKs*%I%rEE_u$F#7kAhe)tkf^)&%OyVLdHPuY#3Oh8_bkvJAI2m!Ttv!{n5qufcgzScA&a_23*`mM#GCtFZQ$rT>6+ zx-2~o;;OKIDMv@a?cTI60i@Suoiz!PlH$|tm|LXv7=yezNQHv(uK9uoo)eZy*phBVwbQUyVDzB_4lA>KqPr^ zYoiApHyS3#gAN37Tv!R7G#RXso^%y_TVO5nre{I?F056G6NZ z*5YsIPO#Q}Lsx^?A*_er(0gE|e?u>V82&A{)_+TL|mFe#wwhQY)W%>}T*OlpI5W}i)>yIk*x5+R$ zRcI23Bf{!emF@*=L{+*D#6)53u1X()b*w7A0^*{uey&ERO@Ya&Mt=q|S6C;i(S2b3 zU5)+$;1+iLKSE|$LQ(|eRJq*^xdUOkjo5Gr0pS}QVZhd+K#7bfP zU7yaK36oQwjsx*bSo0guBVes=K$Afv3+rwJ`Vy=c4d_h}LmF~xZ9_V57EDeNvaX-*sLCg@=;UDN3u+IHJ_kc(d)`Zq{;3Alu*7PAbmkH}a zYq|`aH(Jx*Ks*uFoHq0?uvWC8dqHdx)~z;l&|;XJHuMoV2e#$bsr;MSH1I${+} zP6T}c&Qrn~{3HDxoMV2Zb3yzjtOGyN%V3@Pksbl@kFdseqDiY^ayrqM;9M-Mvz_QV za9;03=Ye=AteKJY3Rp`c=}{2tg_Rmfe_jKV6G>lzvwsw~mPgS)z_~Gs&IhqaSWlzq zRj?AG=`j!^qq(&?nvPrxlM_u}gY%@Y2F1|z;2a%87l8OxSo>q>KVY4Xp~pd771l4E z>8Rgfayrv=a4r(oU!Ca&a9-<77lL>otQlSCHL#X+p(jB6A*_@xbo4ryoG!Er$ zS{6$;g0&%*E&{PzSWjZ`zc^VZ{wrjOztO zGAnMfVtj8XwzA?DD<<@TVjC-NvtnXjD7LfW4l5@0bAfUPFYoela)0L8$;*4ZoHBrU zcJcB)FQ+Cj&u(5m;N`CanP(3#AM*0ILCmw4mydWkZ7}of7kN2sD)X%2x^73z9j`)pve&^+7UM5Xro^`yu!ponh zGtVEqyvoawGni*RFaP1?sF}>OftS~KIeHfJY~^mv?wMX%X}6;N@Lj zPF~DBJ9&AJms6H7&n{lx=jGI;%(I)94|w_OGUnOC%ZI%DZ8`Jo<>ez@PFuk|`*``7 zm(y1=&!4<}!pj+}m}fsPpYn3%YUVk>%QRljTEjdCdHIZ&v)3}uAznV`<(%J{=P)l{ z@N(`t<~hR4m%M~;Pz#pt09%4frrmJ2;8Fq}VloW)3w=XpW+p8rWP)$xhh_GJxXhxW zgfB=N9hQlF?*Y<Cyhd-Z}HR!QL19uHftXr?TB~v zbAx|^SHUZuTONHp;2$1)mlIxr{`WF7oZbHBLRZ+#Bok?xp+7TmWa!Ugo|lS+om132 zA9a6LVw|_SKN~UDv+mDMjPpSE=OD)Uru%ae)be?>qirfcv|A%DYZ0r$wW|E)Wo0E~h0Li{MBY#17-`4ewip-=CG4@kj znVEbv8CPR;Ai~V;y{6eziSEd68tc~aa}fs_Xzy|#^1yVe|rZ6!eQ{U3pV37uJ;Ci zN$~$0e~=S?UwOY^@Owyp<37URum3;rH+90lwYT2?R+8ViKQZ{@{|EkNPWaCx===jE zzj5DV@WTV@f6Y&GC;S2OzRAcBJow`IH}0nlesE{Ve;6uU;C#=L!Fiq0d|hBfe{QKH&TKo9p~D@VjKN4|sz=Kdh@S<@JfbGY&n8<$l&D{n!ou5`Z7v zUHHq&>hn(UkHMc0?vAYc343>&zrU~3lZJ33#P}b}_4&1|4}u##S9X_W*_VCt~qUC)vLVVaIsze-7i#C&z2tC$E$| zesWyKeZ2#2eDjkxufIn)zu?4Wifq@o-&!s!%fXF2>t{6!e<1iX%1=8d{-sX*dz|pEnwgbZ`_A`$Legyw6D~DL0*7LU-_%q7eNGJZI;Ai=tAoo>co!sa6JY+;q(e7oL zA2;}*$M9q2x-!}d1pkNV{v@Bo+re*OP zM96tuFZaWvvOjH|@Gs^3Z{A<62R|Ecak(DAPw4@n*-aA6Xk2j-XYl#=~v zFa3Ue-lc&=ODF!5PW-pQ?~39LH3vUW4NJ+-o%ns7_}S+K)_?fN2mCPR^hb`*L)?c8 zKTHQddP=|XxhhEJKQG7+VIE!OKI1C!>z%ZF2K)v_Lb*r*KkLsNnP+3&W&_3O8^(VI z{)~9o=NZPcRL%>ekssBa@FY3$laN?PoFhIw+zoznWms%jhln^wSghR9~@~9b;QKR*@NS|laQFG&XHk`uuwPntzZ5bgY4lE(Gm9G*x2A6_ONJ2 zY!4D18ypp84~>tC>H#6hvIEkgL8F2rqTNC|cP92$L5_Ok#yM zy}eaHNXM{{PBr7BL#p|Nbnour0smwf9M$2Uac3OhA08VM#i~ODvUao+W@=)dGsxD|-n449dNyEf_cc>i_Z+xjCEjBFN4W_Sq zcYEis*ti(BbR9kHUEM|JJ-nmiqrzfg!-wUZQRhk;OI9_cYbvXa(IWt z#2d>}T$)*D-eHe4FZNMU*7<(tYeH}k+h(<3%2yw{nI-Q z-#0QWx`U%*hUb6#xH!d~!G;t9^K5QN>Q>0RHrzZzxAiRr)^TJ+`w)9bTs*(`6Klu3 zfAWqCbA;R8oNae@WBKOJT%`)!kX5Z#+wS4!C78^c!?(K;;CB}dg6wbHQ+nDV<2Kc! zhMmKrqhdmhI~sgDDDJha*S*?J>%%7m<5Lct!|XFoQ~sNm?9HOPu?usPusFD~z&fd3 z9d0h&3H)*W4EgiR`#YbDf{!mW{<%i& zZ~VT_-XRJ;6NzeZ_nGmoV6GN+)wEu{Si&++7mSmwk8W%r@35Cdbhl-6%L7bm`LQ+o z=C)4U;(A0mg4=_1#0uHb&|sp%VmlKzxUULxgQZx(5!^vqa3ko}K0YEcv_eEEabs4; z;JA*&Ewo28@CoUN6*chbFb+OYYK9%^V#6YXS%B0!M>>cb`^-e#Ky~X70}5Q4q2v?n z78}DqX1IlQl%I7wh60IU0eeV@J*<03SZ9YF#sN2*oJ@QS7955SZ3ah0gg`IZ=N32E z1c)1aAc}&I)$()y|5mW~EZA2a#`hq`^Ik(5?^zh_Ff2Ywf&pJyn(<8~ks)0%72pBiBT`7CUBf%e5^uZ@Wk~p1TRW`dUm)X+`7@qV8M21)VwGeu z`fZS|u*4hh8yGUua>85N-(rb3-b*lKVPj&Qw7=I9Z@j-?$bXCnq%z*p9dZ`@@D-=A z%*^*3I_?(%{xZ%G#`q0+9V+s|k37xI=b+PNyn%BT{}3vSbBke&_a^4ccw_w;X)ySV zbubZP*qDs=jrS|o9b|0qw~Z_VHsTHW5->R4eBN-Fhm$Hon5Cqwk=a hN5>07UC9;)I*fJ=*N32F6kqhVKp4-347@e|{{iKdn7;r3 literal 50296 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 M#`_?K-rE2F0h`Y)#{d8T diff --git a/d06/ex00/convert.h b/d06/ex00/convert.h index e81e42c..eb32a59 100644 --- a/d06/ex00/convert.h +++ b/d06/ex00/convert.h @@ -2,9 +2,10 @@ # define CONVERT_H #include +#include #include #include // setw() -#include // isdigit() +#include // isdigit() isprint() #include // numeric_limits #include // strtod() #include // errno @@ -22,6 +23,12 @@ bool checkDouble(std::string str); #define MIN_INT_1 "-2147483649" #define INT_MAX_LENGTH 10 #define MAX_FLOAT_INT_PRECISION "16777216" +#define MAX_FLOAT "340282346638528859811704183484516925440" +#define FLOAT_MAX_LENGTH 39 +#define MAX_DOUBLE "179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368" +#define DOUBLE_MAX_LENGTH 309 + +// for tests #define MAX_FLOAT_INT_PREC__1 "16777215" #define MAX_FLOAT_INT_PREC__2 "16777214" #define MAX_FLOAT_INT_PREC__3 "16777213" @@ -32,7 +39,6 @@ bool checkDouble(std::string str); #define MAX_FLOAT_INT_PREC_4 "16777220" #define MAX_FLOAT_INT_PREC_5 "16777221" #define MAX_FLOAT_INT_PREC_6 "16777222" -#define MAX_FLOAT "340282346638528859811704183484516925440" #define MAX_F__1 "340282346638528859811704183484516925439" #define MAX_F__2 "340282346638528859811704183484516925438" #define MAX_F__3 "340282346638528859811704183484516925437" @@ -43,7 +49,17 @@ bool checkDouble(std::string str); #define MAX_F_4 "340282346638528859811704183484516925444" #define MAX_F_5 "340282346638528859811704183484516925445" #define MAX_F_6 "340282346638528859811704183484516925446" -#define FLOAT_MAX_LENGTH 56 +#define MIN_DOUBLE "-179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368" +#define MAX_D__1 "179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858367" +#define MAX_D__2 "179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858366" +#define MAX_D__3 "179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858365" +#define MAX_D__4 "179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858364" +#define MAX_D_1 "179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858369" +#define MAX_D_2 "179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858370" +#define MAX_D_3 "179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858371" +#define MAX_D_4 "179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858372" +#define MAX_D_5 "179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858373" +#define MAX_D_6 "179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858374" // colors # define GRAY "\e[0;30m" diff --git a/d06/ex00/main.cpp b/d06/ex00/main.cpp index e59b463..b831ceb 100644 --- a/d06/ex00/main.cpp +++ b/d06/ex00/main.cpp @@ -104,6 +104,34 @@ int main(int ac, char **av) { convert("0"); convert("-42"); convert("42"); + convert("-1"); + convert("1"); + convert("2"); + convert("3"); + convert("4"); + convert("5"); + convert("29"); + convert("30"); + convert("31"); + convert("32"); + convert("33"); + convert("34"); + convert("35"); + convert("122"); + convert("123"); + convert("124"); + convert("125"); + convert("126"); + convert("127"); + convert("128"); + convert("129"); + convert("130"); + convert("253"); + convert("254"); + convert("255"); + convert("256"); + convert("257"); + convert("258"); convert(MAX_INT); convert(MIN_INT); convert(MAX_INT_1); @@ -185,6 +213,18 @@ int main(int ac, char **av) { convert(MAX_F_4".0"); convert(MAX_F_5".0"); convert(MAX_F_6".0"); + convert(MAX_DOUBLE".0"); + convert(MIN_DOUBLE".0"); + convert(MAX_D__1".0"); + convert(MAX_D__2".0"); + convert(MAX_D__3".0"); + convert(MAX_D__4".0"); + convert(MAX_D_1".0"); + convert(MAX_D_2".0"); + convert(MAX_D_3".0"); + convert(MAX_D_4".0"); + convert(MAX_D_5".0"); + convert(MAX_D_6".0"); return 0; } diff --git a/d06/ex00/srcs/checkChar.cpp b/d06/ex00/srcs/checkChar.cpp index 67c18c3..eba45de 100644 --- a/d06/ex00/srcs/checkChar.cpp +++ b/d06/ex00/srcs/checkChar.cpp @@ -13,10 +13,6 @@ void fromChar(char c) { std::cout << std::setw(7) << std::left << "double" << B_CYAN << d << RESET "\n"; } -char toChar(std::string str) { - return str[0]; -} - bool isChar(std::string str) { if (str.length() != 1 || isdigit(str[0])) return false; @@ -25,15 +21,12 @@ bool isChar(std::string str) { bool checkChar(std::string str) { char c; -std::cout << "char\n"; if (str.length() != 1 || isdigit(str[0])) return false; + c = str[0]; - c = toChar(str); - std::cout << B_YELLOW << str << RESET " is a char" - << " of value " - << B_CYAN << c << RESET << "\n"; + std::cout << B_CYAN << c << B_YELLOW " char" RESET "\n"; fromChar(c); return true; diff --git a/d06/ex00/srcs/checkDouble.cpp b/d06/ex00/srcs/checkDouble.cpp index aea3ba7..ae37981 100644 --- a/d06/ex00/srcs/checkDouble.cpp +++ b/d06/ex00/srcs/checkDouble.cpp @@ -1,63 +1,65 @@ #include "convert.h" -void fromDouble(double d) { - char c; - int i; - float f; +void fromDouble(double value) { + // char + std::cout << std::setw(7) << std::left << "char"; + if (value < 0 || value > std::numeric_limits::max()) + std::cout << B_RED << "impossible" << RESET "\n"; + else if (!isprint(value)) + std::cout << B_RED << "non displayable" << RESET "\n"; + else + std::cout << B_CYAN << static_cast(value) << RESET "\n"; - c = static_cast(d); - std::cout << std::setw(7) << std::left << "char" << B_CYAN << c << RESET "\n"; - i = static_cast(d); - std::cout << std::setw(7) << std::left << "int" << B_CYAN << i << RESET "\n"; - f = static_cast(d); - std::cout << std::setw(7) << std::left << "float" << B_CYAN << f << RESET "\n"; + // int + std::cout << std::setw(7) << std::left << "int"; + if (value < std::numeric_limits::min() + || value > std::numeric_limits::max() ) + std::cout << B_RED << "impossible" << RESET "\n"; + else + std::cout << B_CYAN << static_cast(value) << RESET "\n"; + + // float + std::cout << std::setw(7) << std::left << "float"; + if (value < std::numeric_limits::min() + || value > std::numeric_limits::max() ) + std::cout << B_RED << "impossible" << RESET "\n"; + else + std::cout << B_CYAN << static_cast(value) << RESET "\n"; } -//Char toChar(str) { -// char c; - -// std::istringstream(str) >> c; -// return c; -//} - bool isDouble(std::string str) { - size_t l; - std::string neg = ""; - if (str[0] == '-') - neg = "-"; + size_t l; + if (str[0] == '+' || str[0] == '-') str.erase(str.begin()); - if (!str.length()) + if (str.length() == 0) return false; if (!str.compare("inf") || !str.compare("nan")) return true; l = str.find_first_not_of("0123456789"); - if (l == std::string::npos || str[l] != '.') + if (l == std::string::npos || str[l] != '.' || l > DOUBLE_MAX_LENGTH) return false; - str.erase(0,l + 1); - if (str.find_first_not_of("0123456789") != std::string::npos) + if (str.find_first_not_of("0123456789", l + 1) != std::string::npos) + return false; + if (l < DOUBLE_MAX_LENGTH) + return true; + if (str.compare(0, l, MAX_DOUBLE) > 0) return false; - str.insert(0, neg); - strtod(str.c_str(), NULL); - if (errno == ERANGE) - return false; return true; } bool checkDouble(std::string str) { - -// double d; - -std::cout << "double\n"; + double d; if (!isDouble(str)) return false; -// d = toDouble(str); -// std::cout << "double"RESET" equal to : "B_CYAN << d << RESET << "\n"; -// fromDouble(d); + std::istringstream(str) >> d; + std::cout << B_CYAN << d << B_YELLOW " double" RESET "\n"; + fromDouble(d); + return true; } diff --git a/d06/ex00/srcs/checkFloat.cpp b/d06/ex00/srcs/checkFloat.cpp index 019fcf4..0db73d9 100644 --- a/d06/ex00/srcs/checkFloat.cpp +++ b/d06/ex00/srcs/checkFloat.cpp @@ -1,50 +1,61 @@ #include "convert.h" -//Char toChar(str) { -// -//} +void fromFloat(float value) { + // char + std::cout << std::setw(7) << std::left << "char"; + if (value < 0 || value > std::numeric_limits::max()) + std::cout << B_RED << "impossible" << RESET "\n"; + else if (!isprint(value)) + std::cout << B_RED << "non displayable" << RESET "\n"; + else + std::cout << B_CYAN << static_cast(value) << RESET "\n"; + + // int + std::cout << std::setw(7) << std::left << "int"; + if (value < std::numeric_limits::min() + || value > std::numeric_limits::max() ) + std::cout << B_RED << "impossible" << RESET "\n"; + else + std::cout << B_CYAN << static_cast(value) << RESET "\n"; + + // double + std::cout << std::setw(7) << std::left << "double"; + std::cout << B_CYAN << static_cast(value) << RESET "\n"; +} bool isFloat(std::string str) { size_t l; -// std::string float_xtrem = MAX_FLOAT; + size_t l2; if (str[0] == '+' || str[0] == '-') str.erase(str.begin()); -// if (str.length() == 0 || str.length() > FLOAT_MAX_LENGTH) if (str.length() == 0) return false; if (!str.compare("inff") || !str.compare("nanf")) return true; l = str.find_first_not_of("0123456789"); - if (l == std::string::npos || str[l] != '.') + if (l == std::string::npos || str[l] != '.' || l > FLOAT_MAX_LENGTH) return false; - str.erase(0,l + 1); - l = str.find_first_not_of("0123456789"); - if (l == std::string::npos || str[l] != 'f') + l2 = str.find_first_not_of("0123456789", l + 1); + if (l2 == std::string::npos || l2 != str.length() - 1 || str[l2] != 'f') + return false; + if (l < FLOAT_MAX_LENGTH) + return true; + if (str.compare(0, l, MAX_FLOAT) > 0) return false; - -// to work, one should check the decimal and the integer part -// str.erase(str.end() - 1); -// if (str.length() < FLOAT_MAX_LENGTH) -// return true; -// if (str.compare(float_xtrem) > 0) -// return false; return true; } bool checkFloat(std::string str) { - -// float f; - -std::cout << "float\n"; + float f; if (!isFloat(str)) return false; -// f = toFloat(str); -// std::cout << "float"RESET" equal to : "B_CYAN << f << RESET << "\n"; -// fromFloat(f); + std::istringstream(str) >> f; + std::cout << B_CYAN << f << B_YELLOW " float" RESET "\n"; + fromFloat(f); return true; } diff --git a/d06/ex00/srcs/checkInt.cpp b/d06/ex00/srcs/checkInt.cpp index 828eecb..4585c50 100644 --- a/d06/ex00/srcs/checkInt.cpp +++ b/d06/ex00/srcs/checkInt.cpp @@ -1,8 +1,23 @@ #include "convert.h" -//Char toInt(str) { -// -//} +void fromInt(int value) { + // char + std::cout << std::setw(7) << std::left << "char"; + if (value < 0 || value > std::numeric_limits::max()) + std::cout << B_RED << "impossible" << RESET "\n"; + else if (!isprint(value)) + std::cout << B_RED << "non displayable" << RESET "\n"; + else + std::cout << B_CYAN << static_cast(value) << RESET "\n"; + + // float + std::cout << std::setw(7) << std::left << "float" << B_CYAN + << static_cast(value) << RESET "\n"; + + // double + std::cout << std::setw(7) << std::left << "double" << B_CYAN + << static_cast(value) << RESET "\n"; +} bool isInt(std::string str) { std::string int_xtrem = MAX_INT; @@ -24,17 +39,14 @@ bool isInt(std::string str) { } bool checkInt(std::string str) { - -// int i; - -std::cout << "int\n"; + int i; if (!isInt(str)) return false; -// i = toInt(str); -// std::cout << "int"RESET" equal to : "B_CYAN << i << RESET << "\n"; -// fromInt(i); + std::istringstream(str) >> i; + std::cout << B_CYAN << i << B_YELLOW " int" RESET "\n"; + fromInt(i); return true; } diff --git a/d06/ex00/srcs/convert.cpp b/d06/ex00/srcs/convert.cpp index 655b190..ba1c1d7 100644 --- a/d06/ex00/srcs/convert.cpp +++ b/d06/ex00/srcs/convert.cpp @@ -2,27 +2,21 @@ #include #include "convert.h" -bool isElse(std::string str) { - std::cout << B_RED << str << CYAN " is not valid type for this exercise" RESET "\n"; - return true; -} - bool (*checkFunc[])(std::string str) = { checkChar, checkInt, checkFloat, checkDouble, - isElse }; void convert(std::string str) { - std::cout << B_BLUE << str << RESET "\n"; + std::cout << "\n" B_BLUE << str << RESET "\n"; int size = sizeof(checkFunc) / sizeof(checkFunc[0]); for (int it = 0; it < size; it++) if ((*checkFunc[it])(str)) - break; - std::cout << "\n"; + return ; + std::cout << B_RED "is not valid type for this exercise" RESET "\n"; }