From bd83d90b5f7487375e92d965e86a2b61d746f7a2 Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Fri, 18 Feb 2022 18:17:00 +0100 Subject: [PATCH] d02 ex02 et ex01 variables statics et min max --- d02/ex01/Fixed.cpp | 16 +-- d02/ex01/Fixed.hpp | 4 +- d02/ex01/fixed | Bin 0 -> 19088 bytes "d02/ex02/\032make" | 238 -------------------------------------------- d02/ex02/Fixed.cpp | 46 +++------ d02/ex02/Fixed.hpp | 5 +- d02/ex02/operators | Bin 44984 -> 40848 bytes d03/ex01/main.cpp | 12 +++ d03/ex01/robots | Bin 29200 -> 29200 bytes 9 files changed, 41 insertions(+), 280 deletions(-) create mode 100755 d02/ex01/fixed delete mode 100644 "d02/ex02/\032make" diff --git a/d02/ex01/Fixed.cpp b/d02/ex01/Fixed.cpp index 6b16de2..69954d3 100644 --- a/d02/ex01/Fixed.cpp +++ b/d02/ex01/Fixed.cpp @@ -12,8 +12,8 @@ */ int const Fixed::_frac = 8; -int const Fixed::_fmax = -1U >> (_frac +1); -int const Fixed::_fmin = ~_fmax; +int const Fixed::_max = -1U >> (_frac +1); +int const Fixed::_min = ~_max; /* * default constructor / copy constructor / destructor @@ -42,19 +42,19 @@ Fixed::~Fixed( void ) { Fixed::Fixed(int integer) { std::cout << "Int constructor called" << '\n'; - if (integer < this->_fmin || integer > this->_fmax) + if (integer < Fixed::_min || integer > Fixed::_max) std::cout << "error: integer out of range" << '\n'; else - this->_value = integer << this->_frac; + this->_value = integer << Fixed::_frac; } Fixed::Fixed(float const floater) { std::cout << "Float constructor called" << '\n'; - if (floater < this->_fmin || floater > this->_fmax) + if (floater < Fixed::_min || floater > Fixed::_max) std::cout << "error: float out of range" << '\n'; else - this->_value = roundf(floater * (1 << this->_frac)); + this->_value = roundf(floater * (1 << Fixed::_frac)); } /* @@ -81,10 +81,10 @@ void Fixed::setRawBits( int const raw ) { } int Fixed::toInt( void ) const { - return (this->_value >> this->_frac); + return (this->_value >> Fixed::_frac); } float Fixed::toFloat( void ) const { - return ((float)this->_value / (float)(1 << this->_frac)); + return ((float)this->_value / (float)(1 << Fixed::_frac)); } /* diff --git a/d02/ex01/Fixed.hpp b/d02/ex01/Fixed.hpp index aab1d17..bd3f0f6 100644 --- a/d02/ex01/Fixed.hpp +++ b/d02/ex01/Fixed.hpp @@ -26,8 +26,8 @@ private: int _value; static int const _frac; - static int const _fmax; - static int const _fmin; + static int const _max; + static int const _min; }; diff --git a/d02/ex01/fixed b/d02/ex01/fixed new file mode 100755 index 0000000000000000000000000000000000000000..ce8fca3114150c1932d46111ca1935732d801300 GIT binary patch literal 19088 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 literal 0 HcmV?d00001 diff --git "a/d02/ex02/\032make" "b/d02/ex02/\032make" deleted file mode 100644 index e884f78..0000000 --- "a/d02/ex02/\032make" +++ /dev/null @@ -1,238 +0,0 @@ -#include "Fixed.hpp" - -/* - * functions to print numbers in binary - * for the float, found help from stackoverflow : - * https://stackoverflow.com/questions/474007/floating-point-to-binary-valuec - */ - -std::string printBitsInt(int num) -{ - int i = 0; - - for (unsigned int mask = 1U << (sizeof(int) *8 -1); mask; mask >>= 1) - { - std::cout << ((num & mask) != 0); - i++; - if (i == 1 || i == 9 || i == 24) - std::cout << ' '; - } - return ""; -} - -std::string printBitsFloat(float num) -{ - int *p = (int *)# - int i = 0; - - for (unsigned int mask = 1U << (sizeof(float) *8 -1); mask; mask >>= 1) - { - std::cout << ((*p & mask) != 0); - i++; - if (i == 1 || i == 9 || i == 24) - std::cout << ' '; - } - return ""; -} - - -/* - * statics variables initialisation - * - * for MAX integer : - * 00000000 01111111 11111111 11111111 ( 8388607) (-1U >> (this->_frac +1)) - * <= ... >= - * 11111111 10000000 00000000 00000000 (-8388608) - * - */ - -int const Fixed::_frac = 8; -int const Fixed::_max = -1U >> (_frac +1); - - -/* - * default constructor / copy constructor / destructor - */ - -Fixed::Fixed() : _value(0) { - return; -} - -Fixed::Fixed(Fixed const & src) { - *this = src; - return; -} - -Fixed::~Fixed( void ) { - return; -} - - -/* - * int and float constructors - */ - -Fixed::Fixed(int integer) { - if (integer < ~this->_max || integer > this->_max) - std::cout << "error: integer out of range" << '\n'; - else - this->_value = integer << this->_frac; -} - -Fixed::Fixed(float const floater) { - if (floater < ~this->_max || floater > this->_max) - std::cout << "error: float out of range" << '\n'; - else - this->_value = roundf(floater * (1 << this->_frac)); -} - - -/* - * assignement operator - */ - -Fixed & Fixed::operator=( Fixed const & rhs ) { - if ( this != &rhs ) - this->_value = rhs.getRawBits(); - return *this; -} - - -/* - * operators < ; > ; <= ; == ; != ; + ; - ; * ; / ; ++ ; -- - * ref : https://en.cppreference.com/w/cpp/language/operators - * for division, if you want to avoid floats (legitimate) : - * https://stackoverflow.com/questions/8506317/fixed-point-unsigned-division-in-c - */ - -bool Fixed::operator< (Fixed const & rhs) const { - return this->toFloat() < rhs.toFloat(); -} -bool Fixed::operator> (Fixed const & rhs) const { - return this->toFloat() > rhs.toFloat(); -} -bool Fixed::operator<=(Fixed const & rhs) const { - return this->toFloat() <= rhs.toFloat(); -} -bool Fixed::operator>=(Fixed const & rhs) const { - return this->toFloat() >= rhs.toFloat(); -} -bool Fixed::operator==(Fixed const & rhs) const { - return this->toFloat() == rhs.toFloat(); -} -bool Fixed::operator!=(Fixed const & rhs) const { - return this->toFloat() != rhs.toFloat(); -} -Fixed Fixed::operator+ ( Fixed const & rhs ) const { - Fixed result(*this); - result._value += rhs._value; - return (result); -} -Fixed Fixed::operator- ( Fixed const & rhs ) const { - Fixed result(*this); - result._value -= rhs._value; - return (result); -} -Fixed Fixed::operator* ( Fixed const & rhs ) const { - Fixed result(*this); - result._value = ((long)result._value * (long)rhs._value) >> 8; - return result; -} -Fixed Fixed::operator/ ( Fixed const & rhs ) const { - Fixed result(*this); - - while (result._value < (rhs._value << 8)) - result._value <<= 1; -// result._value /= rhs._value; - return result; - -// if (rhs._value >> _frac != 0) -// result._value /= rhs._value >> _frac; -// return result; - -// return Fixed( this->toFloat() / rhs.toFloat() ); - -// -// 10 / 5 = 2 -// 5 / 10 = 0.5 -// 10 / 6 = 1.666... -// 6 / 10 = 0.6 -// - -} -Fixed Fixed::operator++() { - this->_value++; - return *this; -} -Fixed Fixed::operator--() { - this->_value--; - return *this; -} -Fixed Fixed::operator++( int ) { - Fixed old = *this; - Fixed::operator++(); - return old; -} -Fixed Fixed::operator--( int ) { - Fixed old = *this; - Fixed::operator--(); - return old; -} - - -/* - * returns min and max - */ - -Fixed const & Fixed::min(Fixed const & lhs, Fixed const & rhs) { - if (lhs < rhs) - return lhs; - return rhs; -} -Fixed const & Fixed::max(Fixed const & lhs, Fixed const & rhs) { - if (lhs > rhs) - return lhs; - return rhs; -} -Fixed & Fixed::min(Fixed & lhs, Fixed & rhs) { - if (lhs < rhs) - return lhs; - return rhs; -} -Fixed & Fixed::max(Fixed & lhs, Fixed & rhs) { - if (lhs > rhs) - return lhs; - return rhs; -} - - -/* - * functions that returns _value - */ - -int Fixed::getRawBits( void ) const { - return this->_value; -} - -void Fixed::setRawBits( int const raw ) { - this->_value = raw; -} - -int Fixed::toInt( void ) const { - return (this->_value >> this->_frac); -} -float Fixed::toFloat( void ) const { - return ((float)this->_value / (float)(1 << this->_frac)); -} - - -/* - * overload "<<" -> output fixed point in float representation - * found here : https://github.com/pgomez-a/42_CPP_Piscine/blob/master/cpp02/ex01/Fixed.cpp - */ - -std::ostream & operator<<(std::ostream & o, Fixed const & rhs) -{ - o << rhs.toFloat(); - return (o); -} diff --git a/d02/ex02/Fixed.cpp b/d02/ex02/Fixed.cpp index 42edded..c92534a 100644 --- a/d02/ex02/Fixed.cpp +++ b/d02/ex02/Fixed.cpp @@ -48,6 +48,7 @@ std::string printBitsFloat(float num) int const Fixed::_frac = 8; int const Fixed::_max = -1U >> (_frac +1); +int const Fixed::_min = ~_max; /* @@ -73,17 +74,17 @@ Fixed::~Fixed( void ) { */ Fixed::Fixed(int integer) { - if (integer < ~this->_max || integer > this->_max) + if (integer < Fixed::_min || integer > Fixed::_max) std::cout << "error: integer out of range" << '\n'; else - this->_value = integer << this->_frac; + this->_value = integer << Fixed::_frac; } Fixed::Fixed(float const floater) { - if (floater < ~this->_max || floater > this->_max) + if (floater < Fixed::_min || floater > Fixed::_max) std::cout << "error: float out of range" << '\n'; else - this->_value = roundf(floater * (1 << this->_frac)); + this->_value = roundf(floater * (1 << Fixed::_frac)); } @@ -106,22 +107,22 @@ Fixed & Fixed::operator=( Fixed const & rhs ) { */ bool Fixed::operator< (Fixed const & rhs) const { - return this->toFloat() < rhs.toFloat(); + return this->_value < rhs._value; } bool Fixed::operator> (Fixed const & rhs) const { - return this->toFloat() > rhs.toFloat(); + return rhs < *this; } bool Fixed::operator<=(Fixed const & rhs) const { - return this->toFloat() <= rhs.toFloat(); + return !(rhs > *this); } bool Fixed::operator>=(Fixed const & rhs) const { - return this->toFloat() >= rhs.toFloat(); + return !(rhs < *this); } bool Fixed::operator==(Fixed const & rhs) const { return this->toFloat() == rhs.toFloat(); } bool Fixed::operator!=(Fixed const & rhs) const { - return this->toFloat() != rhs.toFloat(); + return !(*this == rhs); } Fixed Fixed::operator+ ( Fixed const & rhs ) const { Fixed result(*this); @@ -135,34 +136,19 @@ Fixed Fixed::operator- ( Fixed const & rhs ) const { } Fixed Fixed::operator* ( Fixed const & rhs ) const { Fixed result(*this); - result._value = ((long)result._value * (long)rhs._value) >> 8; + result._value = ((long)result._value * (long)rhs._value) >> Fixed::_frac; return result; } Fixed Fixed::operator/ ( Fixed const & rhs ) const { Fixed result(*this); - - result._value = (long)(result._value << _frac) / rhs._value; - -// if (rhs._value >> _frac != 0) -// result._value /= rhs._value >> _frac; - + result._value = (long)(result._value << Fixed::_frac) / rhs._value; return result; - -// return Fixed( this->toFloat() / rhs.toFloat() ); - -// -// 10 / 5 = 2 -// 5 / 10 = 0.5 -// 10 / 6 = 1.666... -// 6 / 10 = 0.6 -// - } -Fixed Fixed::operator++() { +Fixed & Fixed::operator++() { this->_value++; return *this; } -Fixed Fixed::operator--() { +Fixed & Fixed::operator--() { this->_value--; return *this; } @@ -217,10 +203,10 @@ void Fixed::setRawBits( int const raw ) { } int Fixed::toInt( void ) const { - return (this->_value >> this->_frac); + return (this->_value >> Fixed::_frac); } float Fixed::toFloat( void ) const { - return ((float)this->_value / (float)(1 << this->_frac)); + return ((float)this->_value / (float)(1 << Fixed::_frac)); } diff --git a/d02/ex02/Fixed.hpp b/d02/ex02/Fixed.hpp index c30657f..b63a80c 100644 --- a/d02/ex02/Fixed.hpp +++ b/d02/ex02/Fixed.hpp @@ -26,8 +26,8 @@ public: Fixed operator- (Fixed const & rhs) const; Fixed operator* (Fixed const & rhs) const; Fixed operator/ (Fixed const & rhs) const; - Fixed operator++(void); // prefix ++o - Fixed operator--(void); // prefix --o + Fixed & operator++(void); // prefix ++o + Fixed & operator--(void); // prefix --o Fixed operator++(int); // postfix o++ Fixed operator--(int); // postfix o-- @@ -46,6 +46,7 @@ private: int _value; static int const _frac; static int const _max; + static int const _min; }; diff --git a/d02/ex02/operators b/d02/ex02/operators index 51e3beb67e99be62615cb48f70a386a116e7dfb4..0d59a29fc308e4124a94fa275e32f6a9be1a540f 100755 GIT binary patch literal 40848 zcmeHwd3>Bzz4w!(&=g8DWi5*`lr2yik}gn|!gQH-0;P>f3uT?8S(->Tl1WLyK)5B` zrb8quN|1XodQtO1yaXi}!HH8_XjCo+P^khM6!Zj&1SuF1$ou`CZO%**F247E-apv%>=trCvSH*JU_7FW@cl4#n%Iy-#@u z13eA@4PQV*W~@wCa%Rj_Q!fJ}<$5%|Cp~}}=K&7h3Gy{D8V@;AE^!1jsK(Jl)YOcg zPt7TJ5J5fnd;!id56I!kwQ}&xX!xwXVnz3g0}9aNzFBH&Mpurx8ER4Vp^ktA%s8s! z&NRVjzlf&XsFoYma%S|joEc3%sfPb|Yx?f=0A`#AICv}NYholXkAl}CWrTfYa*8n^ z0W;pM6K_T%_Zi61&rf=ov=?f7Q{^RB`)@{V-aEUxYSTH3&aN(-UtLw()I7g=$vN}S zS(MXQm$N{|eIy)VPpw|N!JBsbIlp{ze9o>*8^80@#-l#0|4AS2pK)Z@%oWY~*FSbf@K5wyKfgEy|2L)`!>ULeV+lqR8TKQF-J>$geG` zt8NT#vQUMDO5n)Kyr43$sJynUI{%-wA@xMg4TnpcoAdJW7O032P*v^b$&?k*W^hGb zu;9|t!b^)5GDT~PB1@|38pDt+UzA^4712H^rwdjU7S$DngGg;@b4hqp`R1zHaA`@T zw35kgZVuO%H#FAOmQ+_owuZOl+Q4ALX6}UyO*x6Brgs=1D&AZL{b3SxBh{2t z)q1N}tOzg6$@NyR$zQ%AydY;m&SC{`+z9-loCSH_ij5nWEzb|< z_zB%UT^*St!P8fBY;^GEnt`-p2am$oqte0aODajLckn2*J(?Z-OpEorRtJBWgWvApk8<#x z4qjhcNotpa&vN*?9lYrgl6xHd(GLFs@IVF*WZ*ys4rD-O;GL{bzaQGRFEbQ9XyjJU z3$?`~>ElD8ZM!pfNrv&oe*k*?)K~GEbz%Sz=ar<543FbD^|ze!lsGaZ=g)D@Q{hNl z&VR-^Pk|%7a{d#}d5Rn9mh;Cs=c#R^Q_jD~IZtULt#bY#=RB2-)XVudIOi#Bq*%_s z$~jM6BL#B)Mb3H38VShx4$gV18p)OOf8m^`s1d)M-^4jjO(Q-zZ{VD#o)J&ZKg&5! zIU}PV0deXk&UvaC8J6>_IOnCs$dH^Da(+1Ham+V_+FuL(_}MQ6fbcxg0S%!an>Poc z0YeBq-mgzs;&n(}yDRI&+oc5M#Sb7w)Jo4&`kpiTmZs=41V`UjKUN>>pZ8{d`?J@D z+W!#R_UdTC`usid-s=KhXwS}o9QKSJj=CT96Wo#5-%0*m6*`>oB$(Mh1Csx?zsR9|G_>BTEsh9 zzJuPx8+)-ExgOEvy#s7#vCKh@hB}%=sAI!karJ74Q5@#*2r&+=Qi%)(B4gstOJJyd zXQ;hn?8EVKWg!|PJixb};slGOTfc*H#XV~A(LTabqqxXw6A5~Zu+sL-2iiu$fkUmx zup>fPiQH#Ikd7g`ocEl#$HZvV42j+O#7B{)fpZatGH(#b0dx;t7d9!YY3sg-jIv33`mM()f8t)(H z1^I~&aNiQy4ys?=w9Jilz*mf_o(4Utj=hc@!fv zjmmCEhA>pd#VJ;0mqR8zFo)uILtJ*BQh7Xat;x9aiL16|I<20LmO*Kwe!1su-?_cx zE<@STMzAL>t4;3b+$2LC!NE{_TPs=gJZ|P7d!c9_X-HV2M8EjQDr267lfj1;mY=UPfM zMy?%g#AH1-y6sPCB4mBacGw83EDk0cZKBaKYt(OLl+n1T)J9LVlxU1xJKBiRMxVC| zd=497Wwa>SXe*7r^|z$xyNG)cI2C=S)ngj+;fq!D(+y=u8^OsMa*W%H(~xqGeq=)u zmJK<+)bz%v*^NLZjE1Cn5yO73yb%eG7-1DvOL7FVA&<2Y3_CJ}QNn)lS*vodLnf>m z^0)7q1PnQJ!m>H1 ziN?saqm3ACbh$OU-C-lFjQ#`$oJgOh(d&|NvYeM#M_L^{gk?GJTW%8C?2rkoavo~M z>m52_S#o@jgf0d8!4!9WS29kP^Jd`G0`NO}2+MLljlE8h=Qw1-s+<>Eai2pcEX&EKc}hIf zArn^R{P3^Fy64ad%W|%@;$!BL06P(3Rn7s3JLNpO1VKJ%RgPL2Q_fizsB*q#DbX0Y zcC-4=cWWuVP zIaa*ep%a$nyw!?#Ib_1BoNtXL1+l9^LnkcD`4%=Br9I@339E93t$4tp6PD%d zwc<-0GGSFte{w+0405JbnQLWCIej{_XIn}%My?%g#OTc4Y!&z&Ho_{i|M*K%7H_A~ zdw^4M&apD4ocEop%6W{XL}TRI(MF6mdayN`>97%2M(;>A+DW5xlX0?~v#cYYqld68 zXBgX)@^j2w*mJuBtjhU|H%%O)4xO+pr{9VThfG+Nv(t(XJ9NUboUdS?Qr7o6WWuVP zpMkiu+4eBVrB>yTmFZ~dr8~G=5EnJ)B<>dQioI9dx6oJ_v=Y%i!U&a0#Ff^Mc!DEF zc;Hx`#eTX^`w@aA5rsa-t3G=5ZE&ba`mKhJmTuUG4;u!>3yTw8^#BVBeBJ3_>1&U8 zYk~2#*XoJ(5r(f+ExwB#NLlJhaKs3!#;9?8?Ge9+KItnw?-tLRnR-k56g_|QjiemQ zruhwU%0{y=nl5O2kI1p`&FxlO)?C-SMguSWw{WKGS|EDShn} zkLMa+3#^`KA7S`P)uI_&jso>^Y1GJPb9Pa$DSF4M|I`v{{r zR3%=-E}%HP1V@apYNShzHz8$D9Fkmv)9K!6*1a*@d(hR3Rl4pSk#H|oFA05$j{WIx zraiUmq>D{C#<5YW6K~FWZv*ED48m_+7YU9SVbxc|e@^%!Rjz|d*Ew;KgW%H!-X4Aq z7Ed542TSr`p^Vcb_yxt zTl11x#jhMhfU+>|iC-kJ+)VpO5uZ&UV-j(%K{##F_o_+DcE@?bOp7?!#@6bP39B~Q zV#S*sI$?pFvQ~`--;JF zWWuUVeh6_{2bGTy+vJ;8Wys2O#FikR%!h1~FPhb++k`~%;Tfh00#+{CM;L8FRpJSI zdRvm&_35Tfgq4f-5k{L(mAD%_zS>QO6C5$Zs!gUDZ_p-E zQ7G+k zN1U*#!DUvw-=PzhHMrl3_c~<4ss^)?1FBEwh!Ixqz4E(+ds1aLR66c;(7hjl zNx9c-m2|{B<(|sku?hELnUc__=o|XQhuO)llP<H7&zGTJn>8d%V&;#q=>2nGA0pS4uYT2P&U7q zz_uXpK2pT|1TrQO*BFG_1>}-ye%a)(*olU)Tv9(p_o-kvI%L9XNu6iK3miIOxukYj z@sL9%td`XKFB$6rhfY{7sY|W+5{FD!EvY9U?lgt$*>78wxmKnlCXf)@v(wCW6O!-S z`bZSxb4{e#Rxa8{7=@=Q5koJjT=)|lF~X_{Eyf$vS*qLzm5zJe?Ac6*iJz$v=O#1B z3*SG!Xwovru|ya#w2DR65uZaQtWH%ASn*7UP8j0-;$8H;ioRM`WSvWK*b;vNS3f*y({ z2O;AxGYGZrU*3e2w*JPXG;SRE@j)K8q17jNUi;4WjvpB`TqjGkjhObfUYNjrFdF)t z)zRxP6CUU+f{my58XG;9-Vy78C_6!(-L@vu7~^t41xOb+oM-4C|&&E1tVT*=*q=i$0--f3>q$yCE7+zds~-uk*{Lx1*2o5 z!%SGY7_#&NhfWx&X2!*z(CEs`ki$V(?IxGMU@Qb2I$^Fc@og)<#32(_yU8&x81Y<( zP8i~YqSA_IJ7mIYH`)7ZBkp(TgxN#l3@bjzArl_h&lKMaakG46V{QCY(w_V`GDWNn zpHZUfaKW*v4l@lJbs$T$jhObfPFV-Oih8TVbC?OMI>div;uw1`;nH@9GK<)$WG&7| z+Z%U@K#j;EHepe!8jV_M-2VX#kEl@iv5*vpNN~gmtL4yX?GGEeit&m$D#n)#8XCzG zZ6gMsW`g}_A790tR>zRTOjyPE(l1SngAScAVr&&H_6!?$$b{8$c+-ma8@h7w(PNa0 zj~X;wBuli7nD(}2=^|gnh}F^KFcVfTo@eRZ4xO-B4lkT!64~W&5LU}!wbjt+&%setqz?q#0SNdR=n9E6IRRNr_X~?eq^QIp%aF9TpVY`D;+XnwH$Up z-1L`htbFV=5}{5F2bW?wlv^9cMv1D!Sx2in*w4kF4rGb85!2pQFYCZpQDSuz7#(0H ztm^Q{b0&_ErFX$ zA#TOv4xKO?NX)k4{SKM1S_rp6+$;pySOM%Y&O$hf3*j1Tqt_@=bvXG5RfmTR8g(E` zw2hedwgOoPzKV@jN4LXFSkQpt<>GpShKpp0wh`0bwnVzfSMh?? z5ptLbD;H0<^ngPrY!m+=^Qk&~u-|Bj#>f(FBc{DASJr{AVx847>M#>lb@ZopC7}qPh-P3$0=+ z+TL9Yq>GhUj;cVzRy5j27;QmqA|0nW#j!WR5hJYDLW4CvWauiu^RiTc{OF;wiw`OQ zjSGY9dU=5unKVC=O(~@hfY|og|I!d^*Ut2YAyW2iuV}0a`7v(l#34- zG=e5ew2hedwmH&8zKWk)9bFDHVddiSmfq>m37fU>LtHKDO~v8ZP7N!0DSd|3(CW|$ z%e8Qm6>oOPgwjVF%R2}M5wEygy&=RlaLa9ZMWCVRZ+l9O6#Ym(k15Se3a} z29b(0uv@5+GGUeG zkM<;axrLs;4xDmBSQ)1I4>%<&{IJDihXc$V4ukMpYkLzMF~Ta%omTUZLno}_w{;wJ z$b@zL$)indURBnYg2eurza%HPi2q2`e+_C##fc{`FHPC%ujgVX5+TtFp%- z6IN-y2jWgM+(XZ|S(V*ZrX!Y#HA|KF64)2*a>fI4X{nD?@wh$HbXh@MZqb-*<}FYEr9&*TpRrtFhZuV(uZ{eXj?e=Sv^5&#Cp7`VO zv%52)qLY$FrgKr$X&b!|j*7gp)R%O~R5(ma{C&m6Nb!lVyfwIcE|UKUw}X-Q?wnNm%BPWtU~)PsODy z9r?UjbX%7Hk}S^pJ9&~)W>RgnmC>b?PhT&$*lm*-8{>Yn(6SUy!ZJ!0pJiD(35y`h zn^=(}v^;WLs>`pXrL=IDjKK-&hE&8QsffwK-b=ep)-FV_K;@$?5l+SSlQ%yVJ4Ecl zRO}$JpR(A~r2EMWu7@n|V|lBPGbUl#PL>xe%dm_nSxY5Z9Le`L zWT~|*H%`JLug5R7EbAv>$)uKS%aS(7!}t$41?lY%YbV|S{)OY02K{> z5V~zQel_OTM|usA$Wu_(hE8+&u#806&(|O4b7L`i~InlX$Ve-_YK& zKN{TM9vq7X$F6mLOo6|TAb+1=+df~Y9baLOwu}w;oGUfG5k1(kG}@d zin-zUlfS)bfBS|}$Jh~*>v|ki~7dPE8Z_hLytyKQBw|syEZX3mKR&=`YB*`!QSo!uQ zBn-waqnL}5MT4W;;%V)8Z5d6=x*eC*9-tXnx8vkaXiioeaUm%Iz?0cxcC9+DDGe=x*{gAo0@{ZoLX%r(eY%XZ-JE%?|Fzck%ZlA!1MPRrSF^fA=z`#A*6nIZVu_uKtzE7Lfz^OCswHIP;ZMqX zGV7J=hb6hKWj{(Wo^|J8@EDWv@msyD&*M{7PH%+>j?D+k^iI~9%;{l%>^ARY zUANPzrxTCv-^P#iFBeM<%ZsF|5WhLo_OU0xsvv(Z6ITM`*fhw-oyW_ zwi$>4!R!@h;a3m9z^y6Q@#mB1zs=R38J&K{;G`CQCfSSyeg60)`cE?YOQ)lUM5uH| zDC^;!_;sPoN$qS(vSWVG=%29n$UjuRqSJQ{XNJ0r&3i+C`}?E@-o;_fF=4{O2gE^~fT`BFQA zK0U~ts}4Q^5MtH$a;i`Ja+A%9~|-1P|5?EEkza$??#x?XGA|GK9AFDu*sylni)--ovCN(-I$a?|T5 zY39|}F1u#gwaczs7IuFFO#c2D8i1qx-8%bAbwD0C{^<;);kRDb88Oq%Kc0IoAG+(8jGQtUT~JOp!)(PAEjw>sor-SWymFSue*tuJ4W%xi`SUg7{P~kJ z)Xg*Ho;Pn&4R!NPW#`W)1CO8MW(w|vwXP^{XsByA-(OW5Dc{Ux(-h&tY$&PST<&RF zMRi>Xur9^(ctYhH4!#3PJ3ixryYXg*cXoUajgRjIT=3oTacmP_Cq_T+S9W9Ej&T@c z2=_WhG4_Jb|DWUIyD<)9EC#(8zY^hxTr0)^#$JrY7=5GT0vLI7a^RCx6$aljC1;NkF?82Qm8aw1VHUYz~L!9GnR3*lGjN37G zW9%Uv;~++UDnnr8$5JwJ!>Sb{?`?Hs3}GC?Sc#FJc-xM#6JrlXeu8xnV?9PeJjP7i z2<*j}jgj9v2w|+p$X_yzW86;s-yx5&7~>$uUW@|c5XMaA5o0z+ev!N%V>d=w9GK*7 z1|DfQ6?$pSzO>_KPS5N_uJLq8{;iZHs1;7N_yZr)eZ=MB|9ar)E{{|2eL&bKm9S5A+D!#(WTmEO@J~c!n0m1e{NIfH zRt4}kTe7PIHpYzk0ccq^^I)H>!+zND!Om25kiV;sH6?q))M;J9k40EZKG08wJ!|8- z1bsc|{7ssrF1{ANmnZ1!LFZmH6+HsFAM~Ir zpUx7gb#gc8+`I6(%7p({CiFk5=~LfCjiOsF}W9W;xH-8L$J?K2A@aC6||1(bfn$BB;mcBMYzgyE6 zx%9dO{ZZQg*5v!dDUdk}@fD1WkG~Cg+V0wbwUPb|l*nyB?iK67m;L(q_($a1>+-#5 z`Bs8<3eF|#_88CTIw9(VdT&hYI^ka;-u9E$ zeJSF-bkb75_s^aE{fPJI+;zKwKY0e=ubljibP!^vuKQcW`@(5tdj7Q8_cVDUr>*O0 z@?xjY0Q~dQj{*MAr{9zQVw1P+%))(5-fz!b0r(s9j=5`#H!!cTdyDtwvt|PR)>)?l zKXjJwH(R{dBz)I=-v?W~2j)Ld;SbI({MwD)^SN^Yzn|;-$&KD!d4wO!^SySX_wzi- z^dE}~w>Nw5FCyXVi+$f|_8wbI_~pgEXPUjgE|yF`TT=LTv-kD$deT98=7Pezw|d{a zkUqV6Vc`$9db^hrzVo7Ee!JD{xv21st={-WGXZyAOie$y*!RFq-qR9(=VITUo4oCT zyQ%2w%L`w>$s1dq2lzi%{3N~OX7AnLG56o>ePPv+58v!Pxayer&E8Y1j(hfI@3mEh zf4JHE(dwCi|7-P3;D5JzCV1XjJrn$`p>L-__@Vq4r@j0+@6NRka`wc!7pJwhc=xTB zv^^X4PWz7*?}4l2Z0PE})1GSazFRCgUnzbtWhG-pYRX_N_BG zdHmKHXpuoRdGXd6=$a8V`QTP|)sEIQ$@it!G<-+kd#!0FQ0kf1G_)d4kT}N2(|q0| zfFDUaU*@ zg!st}9{tw^4N8X3z!DkCR-u-C2j$>vp)ISU@Y$OB(B zlt=cAfE*2eI8)7y-yuo$JbqA$hp~@mb26TQ=Evt^NssU8@nGGbN9*x4J)Wb-ReHQ! zk11~Qj~$=y&)%@9sW#H&&&$ohA3mO+*CeNTw=Brb$z61YMthp6v>FdY{af(IpsVU? z{do&=z%+khl1Prcqnm2V&iNOKd(s1TZUFw>5==u*?a$@oJ&)91-}tSVivWc*CeKPmn&uXvJrWq7mf zK9Q^^3peruE=s}~xEt*&n+!kO>nWcMf4IlTX{kqscZ6s5BbSzer>bTjO2!}MO|~vF zyrb>klTPNxF3}lqQ4-F;F3>wEKJoYDU7-xm?2ZZST!7QOx5pD01*z?7V!TIyobDaw znf>4Fhx33>!{4zte{fQ7ci#D$-_%P!YXt5F{Qo$+d|crk1#)t@$Hx=yu?Z9UW6ndV z{+K^lnd(ok?jPgN&CoNMKX+*T0eyZmwzq41eG2|QjW_2*!~X~X=4a>&0f{pH@Y^d!FP!VnUx^ zqVcKg;##R^Vm~(me>mbDS|5<1@|hJ6J_{#)^zwk5pDbTJ@85x+3p{`Hj)(j#0LJfY z{@yDCM0;n-SI>JAcpuga|1PL|Jgxb=uTuC*P5hn2yPOLC2k^A(*M73^c^r)s{cJDG zo2K^@bN=P$FZ`3N)6>DvxB}YGpi<+VC-HjX3?*8>*~g6jdZS1CU#w;RMdMTR_N6KG zKce}Ebe_$1%8xaE_=pyaU>c;>k{CC?kR9>4ZSezpJ-RR(`;K*}5aw`e^DS`W?y@+i%OKj{D9+aSxV9^wjYDv$#;4YCANrGZ@wESEYa^FVVYgH3 zN$r#Sr{Mn{@LU%&Q`W^#G(Iy0|J)RMMyJ3Zf`rrmdYw<7_Wxv!AKDO*7(UzPaS8q( zo{qCbN`GDie)eJN{&0!Wuj^hbwRqk}iPsZn_@?F`*8Z6N=Lb{p^V^%!{}lb1x-Q)* z{d2U&`%?C|Y~ba7sQcXX%yQsopb{up8oV||Fad^yG7#l z#2J18{9N>ZvEGNx`S(x2bH7c!J_*9U5B}`c=Ru?D9c?#teWl?I5&h}Z@qSth9If$j z?f=mlp94Jgn|O`>^EJOu=d(%^)=0eJN{lyXe*TGS9_8{C-<{I9^je(xX!~> znm?}j>r?inUr9WC)z=}K-Fr{t&D@Om=mhdG@yMP6e=+d%r#Gb^u9W=1>$uQ<@~E0Z z&vxMbn#UdP(faFkyvDb0X#IYjAG81TYW)Q%@$wB;xV*Wvygm|+lx(Ul&-22o*Q{H< zY)v@a*t98}AFe5>s?8~_ulK@N6-Cx835Tods%onuUN~IZ+#KFqUAL*EI=rQ%AuO?} z>K3G`TUFIuUMBUGHbfdDP5ArarCwQiL;2>aMtsyf9H|MHR@c>*H^M+!ozY*0&!;zr zOPZR!(z=@Z>hcJ5N<8NW)gIqM@XwJY3dPQ?nH!&P=+T#2OB- zDqMD1FdSUFG8_i;>a`of!H`CVRu+2Ul~=A^c3J)k&={{3E=xus5IR>KpJW-sM%1#(WHmk;uHfDiGE#mg!lM7c9KAh@3@{Mb+gMk;0!;ikrNWXU>TQ)LzDs26Ai8mlC{2@O#jE-i_aRt5radD-&(a9++rDzNNZl4cbi zTNNlIt-Q9ZI=>X5<&{>VH6slr%ynrnD8oe>t4hOljS+mkp(Y=Nf!9Ungi{ zH>P#LPPCznllb;Nq2`={QtiOe|EG*?Bm#qffh1v!f$UENq% zR9C14sLkq5ZrBRYiXzpG`JXK5rR$OM#o>ZWOQ#4CYha7lP}fvjW|ClC(k?6tvoHyl zFfVDAbK978MHAW)nJqyhtc3armUWbQxtq%)g(Wv~eaZ~xEwbx%6+d9FS1dvfufJ@C z*(^+IRxAiIH8L6hYzr1e7Ke+ElG+KKYBs4- zeC1#&pBG2!u*)TDO|)WB@ckCbfoB(1WfvC_*a z+gb~KYK$}}ioU;`Gzo)-4Y`B@8mh03csaaK@N%%b;#KA%r=d=suye{Q_2o!q8Dz~2 zN=r+VF3OY+b+Msz7#OBXYN|>hQU~pL$&n_NdNiw-gA1k_TnD)qkN*Ssc*ycC3~n>X zqbEI}M>)vvH7H2E>bE-g0<+*g-_{5-UR)GOY0CLQNs=E{rofTRm8 z@0YX0ORD@zknlC1I^(~24wZ@b|2)k5cynEj%jTqGEoOX=W#j`H0Z9*N`D{(V+bNkR zBR@xSdEVt1$!g@y{r*aA&^+hT>{5q;IbMhVe8yzt&2s_1KjD$12K!vi@R{*?(D}^D z%+2$IfR^vp^7Nm%GyZF|caz2&dGnlMSTlw+V`~0P{I_fQ<(khtkI0^(5au}@<@s#R z*f;XL|HYo7fATQ*5%i4*_NRNK*1sJ@SKhDX{aQYd(y-=!h8gcpkvI3%i)SmV8!mIL z^SyBL@l{M+`{uc7KMRY)Ja1JqRRaTa?8bk}oBW&mkzO&7ID9Dqr%b&b@VN5k`HQbi zihKNSpnIgsKL(;JZ=Tcilq;!LTNpJr^)ou-09<+VJSV$aahQF;@Tb~;4uo0wua}#B z?laV)But+ed1K#tj7fvhXZqkB$TEH_ ze^&rAJXg3?4ioyt$eVEtY_7c58Bl_)YUovieKm4sOoOm1Z|)EEYI)4mATTO9JtIUlYjRsit8xjs1{0@djAJ_15gS8 literal 44984 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 diff --git a/d03/ex01/main.cpp b/d03/ex01/main.cpp index ca0fe1d..02a3a40 100644 --- a/d03/ex01/main.cpp +++ b/d03/ex01/main.cpp @@ -2,32 +2,44 @@ void goAttack(ClapTrap & robot1, ClapTrap & robot2) { + std::cout << "."; robot1.attack(robot2.getName()); + std::cout << " "; robot2.takeDamage(robot1.getAttack()); + std::cout << " "; robot2.beRepaired(robot1.getAttack()); } void goAttack(ScavTrap & robot1, ScavTrap & robot2) { + std::cout << "."; robot1.attack(robot2.getName()); + std::cout << " "; robot2.takeDamage(robot1.getAttack()); + std::cout << " "; robot2.beRepaired(robot1.getAttack()); } void goAttack(ClapTrap & robot1, ScavTrap & robot2) { + std::cout << "."; robot1.attack(robot2.getName()); + std::cout << " "; robot2.takeDamage(robot1.getAttack()); + std::cout << " "; robot2.beRepaired(robot1.getAttack()); } void goAttack(ScavTrap & robot1, ClapTrap & robot2) { + std::cout << "."; robot1.attack(robot2.getName()); + std::cout << " "; robot2.takeDamage(robot1.getAttack()); + std::cout << " "; robot2.beRepaired(robot1.getAttack()); } diff --git a/d03/ex01/robots b/d03/ex01/robots index 21a2f625c942b3ec19b4a3408b965b270481655b..6e5d2714843c8718281f135f440c7b965100df81 100755 GIT binary patch delta 5614 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 delta 5401 zcmb_gZB!K38J<}Y#19Z%SYTOpmt91@1Z44~eq|AnF~uCKkm3h^C8tR}(P|ZIRSu?N zb;BWA-`HA{R%1LZNi?Dx8&1rw#uKAIJarQ_At(Y0I0zytDk^sS-aB(=hed6Ebk1S! z%=5hOd!KvnGc$MD-pp@r=BtDG;CPN6S@F&h{7GIr^y2F-ondlfk!gT2c-(}C@7!&l z?G!b~LqoIdoN)T9Y8z=zZ;XI{ji`e?Bf|^xhH;!wQCcljl+=hz@urOw6e>$S;(=bT zSE$JC5*)dEF{DSFFoeeLb$lb*N0Lj*RZ-3;aaG7&h=d8+=!r#`PK!wuD@xCZSx>N{ zoPLlR9-uR?-Job~eey}2K z;|M=#3nh+7(@N5IVY;8R5;9nnRvP$Iq@9*VD@nV7H$G`8{?d*GE7DGc`AOR&aYR~y zj?P-`qkhtkl8PwJHSniM3sOr<>Lcw@!9;t}Z zo&@+wgN-_41nq7o_aCp<9bmT;Q*9OJJc6S-gRQQxY6+6kbJ4&iBoP>^h2(^);&8i9{OFV!84yQ_}JZd6RFM~Nso3aJ7 znK=kmMM96TM?;QJC!pamERKqZ-t6OCqz=nD_!#~a6`>3F)pL&Bs<>W1IP7)BAUqO?}nblQY3 zf<|!-0(9<@Mt8mwA^ zkvANx(Iw99hJe`AG9*Yp@<40FODq!K!e@j{-?&@dVi=({Gto? zo8RPbL0H^43(`WRiz9D}-7M5yhDsP}y9G<*;xM{0&Wh*5qb+g2BS~aME4M0-XN8Mg zySI@s{Ie4t(BK$LRL~~`S<(p;Empo07Bj@q32#}flR8-?xX88pAjzw}sVw)= zDnyB^P}o}frn(7DiBUoH8F>FD@JS}k(wktlZVvfel24L510fyxIX1@cIH_b2?yNypivK_3`l`t*YW(?eJ-QY=|Bcn5wVa z;hkh%$cIuCo!33>;ElIpx*yUT|Mk$j^iiSZaQz_?cf+?<*}Pl zQ9(0^F3%14_b8q2hCDCy5yO|O2Zti=xBh(1NJ|dnTVY&sY{(i_7ZY2l^Qu+Q@Ya6LYi|K(vK7zo zFf%GO`j~O^HEPBw&D4y`uEF9lRx`%88f_*<|165`0) zP~l~43$X3QmJB5Z|8HW6DbZarVaw)_t4%c(1KavT@1NU(F+A;bTu$r%=?DIFR#D0^t&aMX@m zKK|`J=k?OK@@L1b#<&+ea$ME3%@W5NS`arU}o;rw| z_9A}~mP|{)^V@j-9**F-7V7X^2b#PDz5$Z(+yb-mUdR2>7kJ$PSLu1MkXMGgLtGu@ z@D4EZkz5AHWeofS&yAbIaohOdPk4S8kBV?`vt3v)kk4|y^m1MRHalh| z41B|6rxNJ&;8iA0!U%2{*Oe*ZpHY_MrpmaaIb6X6n0Y(|blGR`p^%tboh z2|p{c^Rck5Xd52^gXg40#n@?hCp~jqI2xXG?@57K$i_-6H4jD{2}V{E!i~;?-E$W5 z3Gir68dgi1o0egaB8SK`dK~4^VVER56|>24MaI*O&bQ|pd0r16&r9P?P&Y3xLvN=c zf2U`TJB$u}+Dx33aZ?P;nxDtpVE6nylV5Hz5sJgGYo(e_;EU}U_zy>NFn83*LBsvD zpOx|LW8t^Oc~SU;k%K-U*cRcx?nr55zbnq;jn3!=KZNoYxU(!RSndF)Cu#XK{;$rJ I%l8cUFR=V09{>OV