From 4ee3ae3e7d54e3a7992285baf6c641f5643434a6 Mon Sep 17 00:00:00 2001 From: hugogogo Date: Mon, 7 Mar 2022 22:30:41 +0100 Subject: [PATCH] d06 ex00 all checks are ok --- d06/ex00/Makefile | 2 +- d06/ex00/color.h | 25 ------------ d06/ex00/convert | Bin 31864 -> 50296 bytes d06/ex00/convert.h | 69 ++++++++++++++++++++++++++++++++++ d06/ex00/main.cpp | 60 +++++++++++++++++++++++++---- d06/ex00/srcs/checkChar.cpp | 36 +++++++++++------- d06/ex00/srcs/checkDouble.cpp | 48 +++++++++++++++++++---- d06/ex00/srcs/checkFloat.cpp | 34 +++++++++++++---- d06/ex00/srcs/checkInt.cpp | 22 ++++++++--- d06/ex00/srcs/convert.cpp | 11 ++---- 10 files changed, 234 insertions(+), 73 deletions(-) delete mode 100644 d06/ex00/color.h create mode 100644 d06/ex00/convert.h diff --git a/d06/ex00/Makefile b/d06/ex00/Makefile index 7fd8a82..79357f7 100644 --- a/d06/ex00/Makefile +++ b/d06/ex00/Makefile @@ -37,7 +37,7 @@ SRCS = main.cpp \ checkDouble.cpp D_HEADERS = . -HEADERS = color.h +HEADERS = convert.h D_OBJS = builds OBJS = $(SRCS:%.$(EXT)=$(D_OBJS)/%.o) diff --git a/d06/ex00/color.h b/d06/ex00/color.h deleted file mode 100644 index f40596b..0000000 --- a/d06/ex00/color.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef COLOR_H -# define COLOR_H - -# define GRAY "\e[0;30m" -# define RED "\e[0;31m" -# define GREEN "\e[0;32m" -# define YELLOW "\e[0;33m" -# define BLUE "\e[0;34m" -# define PURPLE "\e[0;35m" -# define CYAN "\e[0;36m" -# define WHITE "\e[0;37m" - -# define B_GRAY "\e[1;30m" -# define B_RED "\e[1;31m" -# define B_GREEN "\e[1;32m" -# define B_YELLOW "\e[1;33m" -# define B_BLUE "\e[1;34m" -# define B_PURPLE "\e[1;35m" -# define B_CYAN "\e[1;36m" -# define B_WHITE "\e[1;37m" - -# define RESET "\e[0m" - -#endif - diff --git a/d06/ex00/convert b/d06/ex00/convert index e63a43b1b4cf9e11992e365911e588571dd8c38a..08780ed72930750935570c3dd40e43efff9a3cf1 100755 GIT binary patch literal 50296 zcmeIbcVJY-_y0X13>^XrihvTpLXAmCqbY46p^1bhh)c=_0%;^02na}*5Q2yZh=_nl zQ=}+GYUmcEh#~^gOF|bAB5i-?%*@?;=92X*e4gh&uV&_)Gw*rbnRDls>@J&kZ0%YV z^73NF=FMJV=;f4`k*2C4e}gihYRbY`aVVc-&$1%m7Zx$u-c(l5Dz|)vHtJ$3?hQ5e z3o9f8*1C$)8MQG&ths6{sB*n8qejh`uLxj29Balb;X>^z45QwM1H#P>_Z2P<5BsfE z{nn~}MqO5o->8lG;oR`2vud~2EujrJqed-m9nU&r(VjR&xDVAWRU(Yq==VDG!*TxG zt*jDuQv36im+>kuMy+tN!@PDv zG7Hk%J&fmqhj>E|^ZL_+9#6M|_Itnsr@M#o|L%cb(nGwRhxy`aD`-3~ddPEzhj9jZ z;E(bU-|b;u@gBxs6~^fcKh`bBgZ?EC`+W}9RYCK`^Uv1`2fvF4ej^WhJXs6kJ3P#{ zE%3{+XISq!a_?n9CpNfVq&Z__>eRt&L_AjDUcE!04#7_!vN@#wYcOh>3It1jO`> zO0_#vqvD-u5iz#NC@5@Ek+zO)W0<{1q%#4co@AY%p}r(01JV(d7}43@+23x947GP^ z>v_MCLH5XCd*=YV%?A7Mtn;|zU`J|Hn#0zi0i-A?UCa%pn3SBF7?og;hvY;#lT#x) z#=wr$E^t~c18f83{=(vu)9f&CM^Hpkywixcee^^HgvP}u#oFWIQ`4NVf2Tb;4l|dC z$1Wqop5jPNOHPVPh<6UQ5A?@nW0Dh7qEa2UPHka6kC(6(0XQrG)PGEX%6KBo z>~Rhl?B6~5|0M--Rdx`o6qp4bP8AnR_u-XmD`3&abcQ7xY{v!v7>h9^J}J$S>a-=g zXZYyr$XJ4p-ZMVK_L#>cI2x`bNiv6zaZExI97%ngebq5YPDrzLYz4V>pIVV{9e{*B z`eFFzD^EekPhE6E?2*o3d!)lTNbEN#COO?H4k->U)@{YPt$4H^W9q@;3JNoa3wECv zaPWE^!0cU;2I1A9lOruX(SeOI#)TZN;W7Q~F@5{ngeosaCkY!1ZGYT;lBrRCj~KsQ4t-x-uvoN<5c_~PJ_sP>2ZFm7Hz*{j<9!7m>lUmAa@2!nR) zlU^ylI6nC{ck8{Ok8FdA9az>MdKY0Gl-^lu3j9h@n7yI=0r}J6Nv05UsQ$+9FUId3 zITet?*a-D|iV@$}TZGwoOFS)F#wT0iwc=!ah9w@{PsZn1;s+9Be32!-VStP;x5P)N zaTZh03C1`L-`5gPiItq1mUydp8TYru&-9n^FiZTW6d7-7iJ$E)v}o=@U0ka$@&PA`a6CUN8W3Kom_J;`V~G22&|ICkt~ zY`G*33&_1)BXL~s#+Fawcs{r{HBRK?zKyLIiL0e4n#z*6ag4E{B8kHZ;of{nyo5W- zSWOa#6VAQ)lXxk26kb;#aX10pTT>D*GPU1c!-jT%d{57`jBwo%4LfxCh>2q^m z5`U8DQ%GFBpssPbTq-BtC=0pCR!%BwmTc7m>K}nhZ8C zC-LWqel3YtCGi{*uTJ9Mk@)i@9zOa~vG6S3B-@vTkIiuwa_tKry}j5rx55=%Vxli| zy-*5DpQ=s4LccGz=bdoD_Cg`_@l?p$C;U5E;NvNfmm~b^=;PAQTQ2+y=;M;lnvgF5NsP{3+<;lFhsJ00J*eKp&TC-U;E4LLZlC-ag?E zK_8c9UXJin(Z?m3w_N!B(8r~iH%Iu<=;IR1n=Jeu=;PAM8zKBo=;M;hOA&q>^l_=> z^%j0}^l^#hbrgO>^l@qBH5Gm!`gm!}^A~V4TU1TXfy!0k)&yU6)2C`nY-#d30J?-{^9ZQJ z8{~&)o^?J0OY8^G;1Vm{%XK2o&!_4b!SA&VSC#2Q|8m$bJGg|v)OrB@!?!%}4$r(6 zz9sk7aIc-=`yV(f0`PqWEQLT%yb(?EfWy*X4jSyxh`oM03NT z*vYqm&I^Y#0ta?u8z5mmDDRaQ2MV+z;dJSqIqb{u%=9_2;aP=Ws0q^WOj~Y1&gfxZ zdJXR$o^9J4p1CV`ETl3#%Qh!`bPk+e#lo|@Y=)+s@XS5fS`=G_3wB!|DEsC6A}$CY zfV~z+lIPW&y#JAegUo%ts0nN-&`WV<(tx#O|YGIxEaI zDG`&p*4ms@MbdRBv3+%nkHRb_n8gIM|8Fxl!36WWu-&=&p}WjYG{Hm@%mjkDLhLCz zW~{zqB%Qb1&bVRBwVQtYhwWlatCOm~4VsMKI40 z%tm3mbF*4uS`kbuf=MEnpNTzC#|%&ymz0P}xoqa7ULswyi2bsTsjDz+31%(9oVab~ zrX|7T3fn!Y^Ic_b1`x~ug87JG?h|{ij+v)0wF#y+!E_>BR};I3j_IW^r=>*X=Cru6 z;_YKsZb{NLnb=S2n2HKBi(qCE%=TMmZfX+DZehD~bD)dNO&5acLNLP!<|MJl>X=Ci zQ-)y55KIW^I+NJ1=$HtF*(D_+AG=zZ>*nfT=A$!7L(}QUtSH z$87E_bJKue8W2nr!R#P*yp9>7FxRC-OzL`bb5fN^*Wtvju494~<_m)Pf?y8ZG;dm~etgA(&r?ouOln?J9alj=e+ ze+%0^soDxNieN?&%o2hrLoh3K%-PpuZW<9xBZ7$`m|eu~uVdyY%uOi~le*c&oKzLk zbp)}W*D*a6W+}leC755Ynz?B}Fn365bd4o;F&)!dVcsX0_X+0PD`sw+o$!FUnO=Q`#}J2@#og7G7mt^~7=*l+2W#R_v?O2nkjH#8^ZL%OCB`)M5$ zt1xp2W)8u8cgf66U4q#sYYjv1*i%Lrx}!Tff?%uOSLIWBB>ZW=30 zUxMjNFp~-9Cb4JenA`ZW2283N!Biud2-0;av0v9QD;4Ijl!)9M4mERAh;)r3b_pGm zs4yQ8%m)OsKF`ceRf5?jY53_@(SZmF#ZJ7onST) zySI+ni?5DAZt|o=Oe!zfoK!i|HJ#Yc=$Hu#Gml{A5zG(g&D{7A%+JDh=fzp~MHwfmwu-%gy zs4(LQW*otMMKDhg%xWDIpfIlz%&P>`hhTmrcCwDSgs+akr1GUiOe(*=IVoS#bquj< z>X?NJvw~n&5X|pq&D=C0n3KYG=O$WV`VmY&f|)`vw}?Gc$2_YrH3+5#!L%h^mk~Qs z#~j92M<6#xr9|ZBXrP&!!lY|oVwch}(-h`Ig87hOHl8taQ;lGD2-}^T9tzWeU^)=Y zK!Q0;?BO~_yg>w$DoQX#3Fc+e^#fvu>X_5`A`4)0q(tN9e5xLp>vYDIPC(TLqBp8>l-IKb7FS0;x#uLnVf>};5Zq9Vro$y5na~sygX9j@Y$zOk;)lnqa;rm?J05+`LLKr-kj#%>#U` z26B@?FbM=Rm0IZEsiI%bW+6epPC1QS5Ien{*F zIwoCVwn~Y}&DOeRZY~@%C)I&qt_#~esm2QPHo?42FrN`jQG)qG#}rnWAc6@Zm^TR~ zhuE}Pe%2MV)*U=|R}o#A4kmGG$WX^!gfz;y}~3BOcKFNBbYnHo~>g>D9lR)^Af?lM!J4Y z>~1>7rZ6X@MC9f~O*1#eNY?~nm(?-l6y_s>`G{b)95!?F0>OMQYvUo_(lNUgX1kP#+-!fz%+00W%}I46n47|OPimFI z3?rCf1oJt;6epOaI%c-Qgb+*!!MsH?*3*@%1$ueI>tv~CKAjjYx^>6q3EvxZ>S5X|v|W^P&#%z0tEC&d*eg)i85Yf^@hm#0KWbSxhYLBr3ogObp43fO?1pmh1n@3 zA~!p$o4L92i#e%I1anK+?n%9+Fz*n|I|Q?kU`i6qG96Q0VZsO|j9_{b%ywe;)iLMr z^-svnpHdNu-MKD~)tW%gt1T%?X zRufDmg4rZ&cW#C&OlyK^O)$v>bAZ@`bWC%FVFbenrY7k+k=Xt^rntg-cIcq&SseQVC`z!8{=LJRNgHVd@Y}9fFA@UDpu1r;gdKFlVGh zOzO;Y=A=rIt|`PWuVa=f%qIl%3Bl~xXXd6B!Tcm_cW$OBOjm;GN-)C-<`l8V>6mvE z#)n{h2qu(t{g~LV>X^O?^PQB4+3cPRAtij9kACj*ut~g=f;NDFC{*I?lb0T z(C3xLPMO<`mmN>-WMP3aDT0@r>wn}46X}&Ps8TkEsO9sMB=})@! zE334$DV?WFM_Z+*AfPfZNSAiEO4pducDl5lRXWj>R@0@0tkNh`dP|t@4E*+;B?BR* z^haI#rBzzel+MwmBdyXC5KtLN*QH&p(p9FkjV`TYl}<3FRdp$|O6{ifrZC+Z_;r^h z13{+rdtJK3DlKkGXY0~;tkPo;P#H+mrJb$PuT5#VF0EyijyI*x>e2^0Ez{~{O0Nsk zoq+>ZX`m_HrArrCrA1BYEL}RxDm@ATm4N}ew3Ai3!j!hsr7u~f<4kE~U3zbaB?CQ8 z=`~@xGqB$(^*5zEbm;=Cl$+9-y7X7DJC z47_1VuL#qffxT9#pDEp@OXpjq-llYhE*)%@9)f_%K%y?~V3jU4rOkC|4XbpNDScX( z=5MoPpqnYZBusY(ezHpIn$j)0be>h}WlE>%(m__~K?tY}^w*{BtkN$`X;WQV%_<#X zN-OBnTU#v|=weDQ2-BT`AFa~brgXC|onw`{AfTo-RhOn)rN5ZccwO4YDqU1XKp5=+ZQ+^k-ArN0)|Mr3+1I zV_o{JRXWs^meZxzb1WHn-ISgaraJ?>tkM@v>3Ur{%PPGK0hNKtx^#e5y3dq4bZINA z^m9|%P?uJ=N{5(IA6G7w=(j|tPAfz4LwbEfobT{_h&y#WE0 zf$_RD-YWghl=jl4uUMs@n9@L9`lMBwYD$ah(%kiy474_-M}_Imz(%XIiYZ;8OQ%?+ ze?mZIV4N=PW0meSr9E|NW2^LIQ|hlv%UPu2_24hAwSrm40MO{dB31Rhnc;oCZ!H;UVM-4P)185Dto6;9`X;G^*&XnF2raJ>i zS6MR9$dvBWr7Nt`vZnNNT{_MxJqrPqfg!rIr&YSnl)k1*{jJjXOzHEwlv|~-ru1)N zx-)S28%qWnn9@DEbeUCJ#*}`hOUGEHry-y+kfBT8uu9jO()PO4&nnF}rPXz*w^bT# zN^c9(oqzL{$YJ>|7ko8VE%?r@olW7( zuqI>w>WkmM^)-axTej+>2k#jkSm|<2{$7CKd6TitUhqC-?tGWaWzxelhvh@h z5f$N`$m}Lj&@*=fbPLbi3g3kVUj()@JoC5QnHb3qjzJM{KL&R#vLsu4!xnHBS-xHi zdPGZX3B)?w*hLE4LSk(S+Y;PewhbJ>yKHNrWLdVgjcgl+wTC)%(qo1LU_!P^dh5eYrQUhIT?oa`_p2!X@JSy z1Fe%`uK4Dx{Bkg7wTqR=yRz+(D&K_d1S8Ddi2lDjM9<^AFQY!Y!dFdT%-O-^@YrPW z$>_n5{c-RAe29EA^T*pR`E0UX%CueETof{pyRtB2aAdNZtN=`IW3hwabO<7{{c_x2 z@a?ChdqujJlzSZA%&l3rYx2-0%g(>5<{W6oUET1hopZydob9IEVKZZgO>u`mN@QWR z!=uZ@4reIDFxmRHa+8c5-psU}xZzXQb^=#aF)4aWi6X$o-Cl>?UWeW0%iaFqt>*cC zW7utH*(V!sDcW?5{J*9v1LJ|rLRN$v|vJ2x}^OlFr8fXU5jS~1ghFUxiUc9CTC$%U^z zte7b-rPCpn)#XH%?Ti@3O9e=5D6!qs2ZTdhw;Yz%CSP1%KpzS+bKsB%=p*Os`Mx1P z{c`h5=xKZlV|K9f2?-n~!ctNVZ8#s?tN#Q9VD&ey=QA}2&a@}R`pph*q51|`^~;sM z4t_l);mj~N>DH6?In?3A9ACh`#i0RLB+VNms`WhD@YR`57=eQr7@c2YpcPnjJ!Fbq zOhMr~G-18XE+^-@Wr^tI^7#;Fqm-=-;p~|`tc-Zql-c0V@T_96!Ki^h`TgztpR3B2(;wR72|b3zTgoKhlRKH z;U|M#WpM;eu7$w4))sqZby+J%Bu2dmMr{mm-+h;B^ffPYuj`?4%n|)Es*hj4gJ&U3 zj(;-jD)%n>qqm3ui-)Y(P#9kw9A9>YOToT)Y+i>DTnqM~hi4DK{^?o(DG=u#9Fko3 zGHn1vT&8l_nel2WUa!Dqmy7$mvIr-GH#TrZt|nqcxVv&waB6V4#p+jA`Z92|MSFH| zS069|@(gr=#rd=fw^ZRmBK*+4ONbj)-cDRJupeWQKB;Z}AuGG7iy zjIINW2&d`?$4e|w>uoR<#PA5((F;4dGt_6HoRqP%1!d&Omtj29)6P!9P;h5)o_1!v z=XzM3EpTtyO*#d^(O)V?qOHyn7*cn}ig2UUR_C+O_$aIM@&cTZxKmw+uDQJs{_j@j zE*xLB7)*r@^?h-5egh#`o&M;-f!+u3|7&&P16M9SAVE<#XT0sUeE4dA2d)eFkl7Ac zxxe8kvxCb*5V^UZ3%7b{$P>7kvbCaehlnX{h5Pkwd2e4V+nH+b0j_(8a4_W#kN&N8 zcq9;Z7$>`Y3PIe%Ai2ZsrQ{AP%GQO-Esice)#l6neI%PFtL6*P`MOV!_POv#+y0*1 zTavN2MBH1x#0RLo6_;)g)qja}8z}c4=stAr7CqkDk1`-&s(WqCE_6$gGd3-(n5TKJj!ii6?ODm+<)AKG^bafiw~A+I>@ z+v1TDGBZn{7hD9^!WCz&yyC2t!x2}UqcEa^uQ(;-@G>P9?ljn22;hSiPMea(83q~$k2xf^Oj|J<<<$zr4PtEa2`xPBWx2hARD!(t5tiCK#a z#rMK=zgn^c$1N`*%Wzkfu-Sar{fFD|)Z&oQ>?ZLq!#S`WDf(@=8iv$`F3@@#4uZx< zxzH6hM_C+4=|unEUFeSE_~whjRB-tD;)QNEgy2Hg8a+6N&d+t9ZV$cIVSZJ)_8mbHm~pof23c4nH1~UtJ#~)dNq5inSI-2bEh}9L5`89 zzNH`k9tv*N;IH4+V9&D`;ICD@#A>oytTwB|>au#wkG;$qvPP^iYXX0J@>SN9HDk?L z3;4^3Hr5Kho+g|{ur{nMYscEN4(v77k-g43u}IdLbzxmuH`blK!FsTs>`m5-y~XUT zH;ZD?EQZB02a98U;BNuMvwo~UOJIpCi6yfXHh`tFH0EUKY#QdRRq4LLy`jnnZKWZ91PAcFpi0$UVKtq9IGSBq^P7gb7-MLX$~4)-7{y@02__b z6FZpLLBxi?$>Y`s5?kz3al%NP@B_sR)O-R=O`zb2Rl->PApgLy!1_TUA@#$81H;0C z8-xV}g!%^sgw+oU3knVhX%HA36eLKZ$G_6o7o&Ity_mrx=*8?GK_7y%|M&VJk*!D2 zn;HFA`3Vw7^%3}DMLdFDtfoiMi~PVr7V90CJHyp37CVErZmwoXJUI{Hu$fKhXzQFT zbHjvj87550Fd-X;35hgJ+?Bb&4HH(DGI4nuCLAxrL;`I8?l>SqZvRS;>-v%On3G50 z;O9AdG$`|9zH#rXXnC|e!aU=rGeVYh1%`oO409WMT zkkGIOxI5e@+@mJmC%3-i?~V(=>cR0SlVp za!myL`I#=)H&6#b{U+3}eC%>vg8J@Rm#aKHTC_apas@&C2GsaBmghk2gnIUQmunW( z_|EAA)*5aMoRMxpqU{`>M-z6Y9lKmxp(K zHbET(b@xAE+)zJ&dMMPbuLB3_H=)LNhql~+aX{VdmdjPR2+RlSx={PycDdR?-5Kfx zsJBD?4b<=ove>+abYfl^WxXnwDq3u^SJAQVA@52*XPV1(4f4&( zlx>t`o!8+dr?a{PiYqm%A73UqZVB+I!OWLS4lU@HpamKL^@VfM56{$TB&O zYBz#&6Lh(7o$z!V%ftCw4z3pk9Y@>`UKi>@o=)L@+F15;NK8kZKZSvF4)U=8`V?-Y z>k7>>^D+i>u@^j#XFjxNLwiBv!MtsU_EFG2Q_JgzVjwu)iO_xzu3KUp-@~izBrkLv zr3y1P1g=}2@=_PtKZABp<7fx%Goam}jia}F9Oa??kIOFC2*_XIZu&U92NrT4N4y>f zUsK}^*L8Hf8$kCp=sb=0D6}7i_JYRS67q5n+D|~c18mm3OxgDeH7`?flDDmlZ+7A4 zWol03;br{C6$vjBHo9p0GEGygi{=4E_A2m0n^iiyAJ*%GeL#o+o4({gVv zm)HHOZTPBQtSg`2i$$aLu@^tli!Joxdwa33g?-A4XT8O)c=0>E*d1XnF2q;A#a0#K zpTEVn2>V(ge)27LuMpq&78~!4_8MbAHtr-@V73aT1v!lY!D#0hmu<0c@T!B6l_Rl5w`WSYs z1YZ)vE(rUhlKfl@`@AIoHHNJa_KA}G{aALXBp(sW@`b&y6yFfbzAnYTh-I6FeWesX zAIt8P;s;~dxYB5^D$S=j*p||Kq=Wq=?0cp8Mh6>ThJWc`Q_G;etqjj~u)SsYZw_`u z*b{vC2XSng4<8lB<_UYh58o8W{_x>TR8%ko2UY`L(Hm*rFYu#08+ z=sxVWuosl$oBObp<@i^9*d}3LF2^tQVSkt7zxQEdpFsPYC-{ebS6BtP7j9Ts+Gc|I+keOR84jc0R(y{|mq63>p7=gZ?+ zuCS+9;FsdrXBGI7c(zQ~$13pY{n&*Hd|W?vOW2=3#kcljE1u#j`mv3|zVsBo+>hly z#gF!5W1dF)>!uK7&wdy7 z_-FV>32f>!e0&0%BkaA;@a+lg$TR%w1a@B7(<9W|9$`)Q=P9Jz$RBmdvkSua{&9XIzK&t{U+>jHTb8g zY)TD2DV5C@_D?nV52@_;8vNT-c2?L^pXYz2vN_N5GpX!LVIO&(&q-tFpXcwTu^Ymk z_X7VhjeYe3Uzf(#2|Movek+ar^#VVe#zww~_VO3`TqoP`BA@JJ-wFHni+s0}jed!* zce3|hLVMFo{I-+*@De}gWCw*kwkDsK&fc%d-%n?s2zz%;{!=@{K`ox2 z&OWWh&!@95gnhUc|7;*TSBp;>$gT@}Zf(A2AX{3SZydA>Ai}uF4{LUcueO;b6i2W+;G4=T88EkSr zJ~e~Q684Yv_`VGGTRpxxgPj)k6hD49gU$Bi7c$rqVgK&O7Yt@+{rHE2*`LCm^D^H* zn0@&&&l$|t3j6%a{N7-8<7IwvFmnm}D}TOl2wUgRrww5{h5eU5|9J=-8Njy;Vc7v_ zZwTP`hp_Jg_@yE27h#VMB?*;PdZ?lhu{X-x>@HRUb$hW@DP6_+{`uxG$?34QZ z^4n~&un*Pei-)o^_4$mU?3%DY4dTBHWnTpGZ9~}_VV?`)uA%ID5Wg~%JrMTNV7_D+ z`!<+=G>q*K_RV1a>o7JVgl`|lCWfHBK7@}L&US_HtHam;n2ru?$1ODeb?7noqY{-{FY;8k63##qXyU~yz0?*Zu?}93;k?__v;-g1; zv7L?hbqM|}y^)RiR}jo@%s+wZBk6tDnEwvmFOB(kP@Rz8drkP5QC{rhCj15j7fSD7 z6TS?Br<(BDP+gJUC$I3s;4OZIe-G6v>799nj~(sBuD!x75GaS($Kf!ucHt-jUwo2)-JEt0MU4P;HUkwFrI^yn7LRA5`Pp z2yaarK5+sZoHqO}1ouksK^wjXf)m>E1yD_EE4&?T`6=-Bx8?hx`a^mX+wtryI5_S2 zJqXU1-hp;}Ed-CZ;|rm>D7~5O`DySLwC6uVwNiQ~+w)2AE8yk!{5}N#mfoTc{96cq z(}6F7Do1)(JMc5$-R-~+K=tlx!dv|se=i#j&TISu1oueq{%d?41T#DG#ZZ0NQFz-s z^0VOW>&SnB>ZtUxUgwi1!NGZ*yCC?P^nQMwuZQ5V*ZC5tE=cdAPW&8rpLgQFLbXDA zCpz)>--CnGiI0FPUwR88`3CU5j^tlJwOM*sBKdjn?nLr~P>t&>yj7j~l*w>#I`ffG z{Up76o%u%a#&_XgLN&FE@V0f~x!~>X!heJ6i1a3OCNcI^T3qv3%c{o;H~V=zk+I$^e%Vj7r^_w zJO3T3v2O_Pn>YA}AHczRgO7n~xAgA5!E?ZSw+CMa)dxL0 zPn!w{rzal^)m-WA>&dr(ceE#84ppx7roYKAf%n;){0LObq<8F1KK(;DIB)WCP~DQ= z553@blE1K+^A;38VsQ(LxppXaV{sdcdA*_d35$FzK8u244;Fu8F+UoLy;$7A;`10N z_F-`siv_Vz?8o9B77HCv{EWqYEEdH9K#|r6^d`LIF7}HG$>YKaRQ4hClsr(IElr?bSTzfaSDs|V{s0P_lH2S0gLlkOnDoMjacMj@xf3iHer#6 z#nfR?Y{udO79S3WA_t3$SWJ5diY-`N!eaUeFDSQ)^0FvrjKs(`QC<<{N24&ZU6fZv zIde2dc8KztC_f&9k)5LaQ=Wf( zQ7(87Bl|^pPm~KMW8`O1-WTPf_c3xnln+F?cnU^-5v5C%OFqEJuc90=740uXc~F!i zKg7tFqJ&of%Gd4#uZVaRIt1seR}IE4V=Kff)Q*9J>BWC21aY_wvEzkQLqk5#n{}IB z2wp;-;2j79_LdD#)UL=_1c!&29uP421xG71#9B8Tc;)|7GC+&kW>&;TC}Wd#mPFjpR5lg$a=#7 zS&vZt@GVB%to2HG)TQyg$`|iRL&F?+8x}YCaK6|&r^@;nYRV+uf!-uWK=2Q*v5pl7>W4_qbG?m8~yoD>a z?`HdoT4C5eWf-61z<)A}8~meRvF-DbwGq!z6F0_PR`oBg^v3?5Q@)|Q>yq<>e2WnL zLl7}vf5n4;_$GW~oba})@Qr!_c>MHQgx9hrSd6N zzo_aERku=gS5?QUdZ4Pusd}2K7pQu*s&}gTpsLTQ`j)DTr~~$ts$W!fh^kwux~r<= zR6S7D<5WFO)eBT@o&Ue}i_P&ZP?{1e!>!_FeWt&xe@c<{+1|2l-J(T9-JODm+7*tC}rTU*sZ#b*Nj0H}l-tbv+{EU}%^MvMx^Zx zSFhy-9B*${hUF9(_hH6$j?%p0(+j;*X~f`{V-trI6n}#4d%K|cldSv5g5u?waXqE2 z-mC&MuA_SVDOS*V>5Rx8_y*M zf8YPXPxru|pq^_C{&B@Oo_7p>J-Dv@Q+@_|;HRnQC4=7tIGBIqIm+O}ZVTkU33@N~ z1nWFfq(LhR8c#pa!>8sRx^4^;oQKcraYA4Iq3ghO6}MhDmI%(n*MS^}KLPWqpzc%R zvw<*@2O_QwTR4&MfKtFEl?@Q_GVDf->{DHJT?X;$!1sq&a&fCEE4IS}2S4LhmQ`fo zb9|LjR+S-M(0-F3j{HyKr0!+a>qU4V^aYOf`j+W|vjXDf$n_jtvE_Ks`@jP#=FPZ| zFHrhOh#PZPAyMHwC z)%oJU1q)k0sBypJqovDQdnoU`GYb zcYud@mWMcgcpK-{K1mK|1mqnzAJ`AZ&-NBB{<(Ou)rR$napQTTj*7opyx{SS@erTw zA-+NIAAT;nqQ=uk{eCDu^9uW32OL~i*7I(s2mX`r3s^yUgSTbHykh&v37t}T?h1Nb z53i{8VDwFacscUCQC8{S^}s*iA^tqf7q1)E^L+{&hqA!WnCmMCq{;x1A1x%Dk%IHg zLwU&dpkFECW!MRIzi=qzRuB58U_E0V_NY9l(~rF>*7?KZ>Fpst2;#mE%h?AW^j~<0 z?|?Xtr=#V#92a_sr^=nE<;iiWsU z(kNpCJm|-J(9eT7j=#HFZ!kQuE%m^;?IF%$Qk`ke^td=b_?NGaR7aoqG^Zog?o71D zBqS#}(wN;In{4lskQ^PAV2^bsr>5DX(lc00a$-t?!|90i3k_)yRx?-A)XzSPEDE^6`$l6laj*hJtCd$!tD0=WYmBg6kxZf zIisBMF``#I{L7~y;3X&7qmp9nv5qunYI=+|Snm20)UDBiN5q8AF;FAVA zQk@d7x7&M!#HZO3(i|NkouPJnOh!gPKtN!0R2u9J!0}0aB4Q$)0Ri~WpzO}nsCZ{u zM2sym3JRMI{tc5Orhf})Di|FWmztc2%`s9Lk>p_v!SQL(_V`0+h5wSP;4y^8r-|0b zhqn~}K&)VTfIm)ADq`Ufx9Zfaz0Gdx(9&)PuXTqmc3Zd#hPUj*>@DBu(5!t#3ux08 z0Cpt-INGUjAN-5c02sR?H8m;Oo{$_P)}<2I1N{R1f^opkG#75dr|6Ca*{BR0wzh1CBgIUU=^JWPg@IjRGUJ)pil0!H5| z(HWNz)h8_y4`hePw)JsoW*htKSo+@aQtI3qVVE}S0;zrh5P6~2C_wfrEaRxSGuI+ z)I_+#$HT=x3a;`I9b;f=+w|Pa#T}cLZ0`$~+5}v8kw zLvq@a<7}{w3Rt2&0{q2sdi;yoW1TcD0}5O;kw^L8|SFz6ItvDGb>WE5=fZG6EARi3{!zdti1&u>xEyNz_47Nu)oP+d5glF}m&Pl)2iwi?k(nDv2xXi;1EG9YK zIQH_kDN^vr4_r}^cyZ7MFR$UA*Fpgqk`HfijRh9m(CZg;L&y6e9twO6d8`{wNP;7& zkF#%q=RWk6gZ9QH)OmG+P+#a6Qjo&w5CF5@! zoulxp2kc#v2H{RHe6w^Fd{CZ&QLo5&R3x=Aiam%;&NrYccWV894V_c<;695xZa5`XecmxLF z=pSQc$7k3Ix_@d17+2cES0Cn=HaO846%94qS47>{u;9BH9H}YH4{p*9KRDR+oKbz0 z2Tv7#(dqFCvGw9(nIC$6qtf~^zu3V^z>~EzRkpzIVQKKIo95V|E!B|_g&mZYlHg>1 z_!|N91JkchG8k|Nfl?e*ztm*$#OmkhtA4BO8w(J_1A0u1-H{RFNO9U>90hkrCSYf z;3YkGf8%{kqxPj@u#MMqjc@=Mw7*jg#HgP)gsQgoZwYbuDv4xc{Kn@NjN0fAFXM_0 zULMr84&cE{MDFqDD3DPvg4f4!D*`__ccVYN!X>t@P@=@xzwtQGerD-!yuWSK z@UpMAS=aw!)!#UN#{1w#UDp_>qF7wE!qVS(zuc%>TJmSzKYk-QN{sy*@2ea2cw^ys z*#GyI{>J<7M!nFIFw1b*5$InAe$;8|exE*LmfT^OtlXtBf1^GREk5vL^f%tmU#|Ka zIs;(%MtuVsaP1oXjraZ6s{Y3LW2|qZpE0c&&===q^fx{q@ZD?(!WL$ku+iVB?}3K) zcfamF2YbVJ7|P0B`noM?6oSskGWOqlj#Pxtk?j>N`gv0o!p4vd2OpII*z M#`_?K-rE2F0h`Y)#{d8T literal 31864 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 diff --git a/d06/ex00/convert.h b/d06/ex00/convert.h new file mode 100644 index 0000000..e81e42c --- /dev/null +++ b/d06/ex00/convert.h @@ -0,0 +1,69 @@ +#ifndef CONVERT_H +# define CONVERT_H + +#include +#include +#include // setw() +#include // isdigit() +#include // numeric_limits +#include // strtod() +#include // errno + +void convert(std::string str); + +bool checkChar(std::string str); +bool checkInt(std::string str); +bool checkFloat(std::string str); +bool checkDouble(std::string str); + +#define MAX_INT "2147483647" +#define MIN_INT "-2147483648" +#define MAX_INT_1 "2147483648" +#define MIN_INT_1 "-2147483649" +#define INT_MAX_LENGTH 10 +#define MAX_FLOAT_INT_PRECISION "16777216" +#define MAX_FLOAT_INT_PREC__1 "16777215" +#define MAX_FLOAT_INT_PREC__2 "16777214" +#define MAX_FLOAT_INT_PREC__3 "16777213" +#define MAX_FLOAT_INT_PREC__4 "16777212" +#define MAX_FLOAT_INT_PREC_1 "16777217" +#define MAX_FLOAT_INT_PREC_2 "16777218" +#define MAX_FLOAT_INT_PREC_3 "16777219" +#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" +#define MAX_F__4 "340282346638528859811704183484516925436" +#define MAX_F_1 "340282346638528859811704183484516925441" +#define MAX_F_2 "340282346638528859811704183484516925442" +#define MAX_F_3 "340282346638528859811704183484516925443" +#define MAX_F_4 "340282346638528859811704183484516925444" +#define MAX_F_5 "340282346638528859811704183484516925445" +#define MAX_F_6 "340282346638528859811704183484516925446" +#define FLOAT_MAX_LENGTH 56 + +// colors +# define GRAY "\e[0;30m" +# define RED "\e[0;31m" +# define GREEN "\e[0;32m" +# define YELLOW "\e[0;33m" +# define BLUE "\e[0;34m" +# define PURPLE "\e[0;35m" +# define CYAN "\e[0;36m" +# define WHITE "\e[0;37m" + +# define B_GRAY "\e[1;30m" +# define B_RED "\e[1;31m" +# define B_GREEN "\e[1;32m" +# define B_YELLOW "\e[1;33m" +# define B_BLUE "\e[1;34m" +# define B_PURPLE "\e[1;35m" +# define B_CYAN "\e[1;36m" +# define B_WHITE "\e[1;37m" + +# define RESET "\e[0m" + +#endif diff --git a/d06/ex00/main.cpp b/d06/ex00/main.cpp index a6bbff4..e59b463 100644 --- a/d06/ex00/main.cpp +++ b/d06/ex00/main.cpp @@ -1,18 +1,12 @@ #include #include -void convert(std::string str); +#include "convert.h" // 2^24 = 16777216; // 2^31 = 2147483648 // first char printable "!" -> 21 (space -> 20) -#define MAX_INT "2147483647" -#define MIN_INT "-2147483648" -#define MAX_INT_1 "2147483648" -#define MIN_INT_1 "-2147483649" -#define MAX_FLOAT_INT_PRECISION "16777216" - int main(int ac, char **av) { if (ac > 1) @@ -115,6 +109,16 @@ int main(int ac, char **av) { convert(MAX_INT_1); convert(MIN_INT_1); convert(MAX_FLOAT_INT_PRECISION); + convert(MAX_FLOAT_INT_PREC__1); + convert(MAX_FLOAT_INT_PREC__2); + convert(MAX_FLOAT_INT_PREC__3); + convert(MAX_FLOAT_INT_PREC__4); + convert(MAX_FLOAT_INT_PREC_1); + convert(MAX_FLOAT_INT_PREC_2); + convert(MAX_FLOAT_INT_PREC_3); + convert(MAX_FLOAT_INT_PREC_4); + convert(MAX_FLOAT_INT_PREC_5); + convert(MAX_FLOAT_INT_PREC_6); // float convert("0.0f"); convert("-4.2f"); @@ -127,6 +131,27 @@ int main(int ac, char **av) { convert(MAX_INT_1".0f"); convert(MIN_INT_1".0f"); convert(MAX_FLOAT_INT_PRECISION".0f"); + convert(MAX_FLOAT_INT_PREC__1".0f"); + convert(MAX_FLOAT_INT_PREC__2".0f"); + convert(MAX_FLOAT_INT_PREC__3".0f"); + convert(MAX_FLOAT_INT_PREC__4".0f"); + convert(MAX_FLOAT_INT_PREC_1".0f"); + convert(MAX_FLOAT_INT_PREC_2".0f"); + convert(MAX_FLOAT_INT_PREC_3".0f"); + convert(MAX_FLOAT_INT_PREC_4".0f"); + convert(MAX_FLOAT_INT_PREC_5".0f"); + convert(MAX_FLOAT_INT_PREC_6".0f"); + convert(MAX_FLOAT".0f"); + convert(MAX_F__1".0f"); + convert(MAX_F__2".0f"); + convert(MAX_F__3".0f"); + convert(MAX_F__4".0f"); + convert(MAX_F_1".0f"); + convert(MAX_F_2".0f"); + convert(MAX_F_3".0f"); + convert(MAX_F_4".0f"); + convert(MAX_F_5".0f"); + convert(MAX_F_6".0f"); //double convert("0.0"); convert("-4.2"); @@ -139,6 +164,27 @@ int main(int ac, char **av) { convert(MAX_INT_1".0"); convert(MIN_INT_1".0"); convert(MAX_FLOAT_INT_PRECISION".0"); + convert(MAX_FLOAT_INT_PREC__1".0"); + convert(MAX_FLOAT_INT_PREC__2".0"); + convert(MAX_FLOAT_INT_PREC__3".0"); + convert(MAX_FLOAT_INT_PREC__4".0"); + convert(MAX_FLOAT_INT_PREC_1".0"); + convert(MAX_FLOAT_INT_PREC_2".0"); + convert(MAX_FLOAT_INT_PREC_3".0"); + convert(MAX_FLOAT_INT_PREC_4".0"); + convert(MAX_FLOAT_INT_PREC_5".0"); + convert(MAX_FLOAT_INT_PREC_6".0"); + convert(MAX_FLOAT".0"); + convert(MAX_F__1".0"); + convert(MAX_F__2".0"); + convert(MAX_F__3".0"); + convert(MAX_F__4".0"); + convert(MAX_F_1".0"); + convert(MAX_F_2".0"); + convert(MAX_F_3".0"); + convert(MAX_F_4".0"); + convert(MAX_F_5".0"); + convert(MAX_F_6".0"); return 0; } diff --git a/d06/ex00/srcs/checkChar.cpp b/d06/ex00/srcs/checkChar.cpp index 62c6ba5..67c18c3 100644 --- a/d06/ex00/srcs/checkChar.cpp +++ b/d06/ex00/srcs/checkChar.cpp @@ -1,11 +1,21 @@ -#include -#include -#include // isdigit() -#include "color.h" +#include "convert.h" -//Char toChar(str) { -// -//} +void fromChar(char c) { + int i; + float f; + double d; + + i = static_cast(c); + std::cout << std::setw(7) << std::left << "int" << B_CYAN << i << RESET "\n"; + f = static_cast(c); + std::cout << std::setw(7) << std::left << "float" << B_CYAN << f << RESET "\n"; + d = static_cast(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])) @@ -14,17 +24,17 @@ bool isChar(std::string str) { } bool checkChar(std::string str) { - -// char c; - + char c; std::cout << "char\n"; if (str.length() != 1 || isdigit(str[0])) return false; -// c = toChar(str); -// std::cout << "char"RESET" equal to : "B_CYAN << c << RESET << "\n"; -// fromChar(c); + c = toChar(str); + std::cout << B_YELLOW << str << RESET " is a char" + << " of value " + << B_CYAN << c << RESET << "\n"; + fromChar(c); return true; } diff --git a/d06/ex00/srcs/checkDouble.cpp b/d06/ex00/srcs/checkDouble.cpp index f22e14f..aea3ba7 100644 --- a/d06/ex00/srcs/checkDouble.cpp +++ b/d06/ex00/srcs/checkDouble.cpp @@ -1,16 +1,50 @@ -#include -#include -#include // isdigit() -#include "color.h" +#include "convert.h" + +void fromDouble(double d) { + char c; + int i; + float f; + + 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"; +} //Char toChar(str) { -// +// char c; + +// std::istringstream(str) >> c; +// return c; //} bool isDouble(std::string str) { - if (str.length() == 3) + size_t l; + std::string neg = ""; + + if (str[0] == '-') + neg = "-"; + if (str[0] == '+' || str[0] == '-') + str.erase(str.begin()); + if (!str.length()) + return false; + if (!str.compare("inf") || !str.compare("nan")) return true; - return false; + l = str.find_first_not_of("0123456789"); + if (l == std::string::npos || str[l] != '.') + return false; + str.erase(0,l + 1); + if (str.find_first_not_of("0123456789") != std::string::npos) + return false; + + str.insert(0, neg); + strtod(str.c_str(), NULL); + if (errno == ERANGE) + return false; + + return true; } bool checkDouble(std::string str) { diff --git a/d06/ex00/srcs/checkFloat.cpp b/d06/ex00/srcs/checkFloat.cpp index 24da83b..019fcf4 100644 --- a/d06/ex00/srcs/checkFloat.cpp +++ b/d06/ex00/srcs/checkFloat.cpp @@ -1,23 +1,43 @@ -#include -#include -#include // isdigit() -#include "color.h" +#include "convert.h" //Char toChar(str) { // //} bool isFloat(std::string str) { - if (str.length() == 4) + size_t l; +// std::string float_xtrem = MAX_FLOAT; + + 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; - return false; + l = str.find_first_not_of("0123456789"); + if (l == std::string::npos || str[l] != '.') + return false; + str.erase(0,l + 1); + l = str.find_first_not_of("0123456789"); + if (l == std::string::npos || str[l] != 'f') + 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 << "in char\n"; +std::cout << "float\n"; if (!isFloat(str)) return false; diff --git a/d06/ex00/srcs/checkInt.cpp b/d06/ex00/srcs/checkInt.cpp index 91b4762..828eecb 100644 --- a/d06/ex00/srcs/checkInt.cpp +++ b/d06/ex00/srcs/checkInt.cpp @@ -1,16 +1,26 @@ -#include -#include -#include // isdigit() -#include "color.h" +#include "convert.h" //Char toInt(str) { // //} bool isInt(std::string str) { - if (str.length() == 2) + std::string int_xtrem = MAX_INT; + + if (str[0] == '-') + int_xtrem = MAX_INT_1; + if (str[0] == '+' || str[0] == '-') + str.erase(str.begin()); + if (str.length() == 0 || str.length() > INT_MAX_LENGTH) + return false; + if (str.find_first_not_of("0123456789") != std::string::npos) + return false; + if (str.length() < INT_MAX_LENGTH) return true; - return false; + if (str.compare(int_xtrem) > 0) + return false; + + return true; } bool checkInt(std::string str) { diff --git a/d06/ex00/srcs/convert.cpp b/d06/ex00/srcs/convert.cpp index 4102473..655b190 100644 --- a/d06/ex00/srcs/convert.cpp +++ b/d06/ex00/srcs/convert.cpp @@ -1,14 +1,9 @@ #include #include -#include "color.h" - -bool checkChar(std::string str); -bool checkInt(std::string str); -bool checkFloat(std::string str); -bool checkDouble(std::string str); +#include "convert.h" bool isElse(std::string str) { - std::cout << str << B_RED " is not valid type for this exercise" RESET "\n"; + std::cout << B_RED << str << CYAN " is not valid type for this exercise" RESET "\n"; return true; } @@ -23,9 +18,11 @@ bool (*checkFunc[])(std::string str) = void convert(std::string str) { + std::cout << 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"; }