From ae62a6d0d77c38b6249ba801ae517f8ed9d308df Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Wed, 16 Feb 2022 18:06:24 +0100 Subject: [PATCH] modif d01 ex03 weapon gettype return ref sur const string, d02 ex02 fini --- d01/ex03/Weapon.cpp | 2 +- d01/ex03/Weapon.hpp | 4 +- d01/ex03/war | Bin 43952 -> 43752 bytes d02/ex02/Fixed.cpp | 64 +++++++++++++++--- d02/ex02/Fixed.hpp | 11 +++- d02/ex02/main.cpp | 156 +++++++++++++++++++++++--------------------- d02/ex02/operators | Bin 32064 -> 23928 bytes 7 files changed, 149 insertions(+), 88 deletions(-) diff --git a/d01/ex03/Weapon.cpp b/d01/ex03/Weapon.cpp index c090ef6..d92b812 100644 --- a/d01/ex03/Weapon.cpp +++ b/d01/ex03/Weapon.cpp @@ -8,7 +8,7 @@ Weapon::Weapon( std::string type ) { } Weapon::~Weapon() {} -std::string Weapon::getType( void ) const { +std::string const & Weapon::getType( void ) const { return this->_type; diff --git a/d01/ex03/Weapon.hpp b/d01/ex03/Weapon.hpp index 859b55e..f6824e9 100644 --- a/d01/ex03/Weapon.hpp +++ b/d01/ex03/Weapon.hpp @@ -11,8 +11,8 @@ public: Weapon( std::string type ); ~Weapon(); - std::string getType() const; - void setType( std::string type ); + std::string const & getType() const; + void setType( std::string type ); private: diff --git a/d01/ex03/war b/d01/ex03/war index ef9fa154655e06a369000ba9b1f6c4460830ce27..ffae4fd61ab7b3826ed0c3a62ff2510b75886b9c 100755 GIT binary patch delta 9047 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 CMP!}; delta 9485 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 (_frac +1); + /* * default constructor / copy constructor / destructor */ @@ -65,6 +68,7 @@ Fixed::~Fixed( void ) { return; } + /* * int and float constructors */ @@ -80,9 +84,10 @@ Fixed::Fixed(float const floater) { if (floater < ~this->_max || floater > this->_max) std::cout << "error: float out of range" << '\n'; else - this->_value = floater * (1 << this->_frac); + this->_value = roundf(floater * (1 << this->_frac)); } + /* * assignement operator */ @@ -93,8 +98,12 @@ Fixed & Fixed::operator=( Fixed const & rhs ) { 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 { @@ -127,12 +136,50 @@ Fixed Fixed::operator* ( Fixed const & rhs ) const { Fixed Fixed::operator/ ( Fixed const & rhs ) const { return Fixed( this->toFloat() / rhs.toFloat() ); } -//void Fixed::operator++( void ){ -// this->_value += 1; -//} -//void Fixed::operator--( void ){ -// this->_value -= 1; -//} +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; +} /* @@ -154,9 +201,10 @@ float Fixed::toFloat( void ) const { return ((float)this->_value / (float)(1 << this->_frac)); } + /* * overload "<<" -> output fixed point in float representation - * took here : https://github.com/pgomez-a/42_CPP_Piscine/blob/master/cpp02/ex01/Fixed.cpp + * 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) diff --git a/d02/ex02/Fixed.hpp b/d02/ex02/Fixed.hpp index 62e199c..c30657f 100644 --- a/d02/ex02/Fixed.hpp +++ b/d02/ex02/Fixed.hpp @@ -26,8 +26,15 @@ public: Fixed operator- (Fixed const & rhs) const; Fixed operator* (Fixed const & rhs) const; Fixed operator/ (Fixed const & rhs) const; -// void operator++(void); -// void operator--(void); + Fixed operator++(void); // prefix ++o + Fixed operator--(void); // prefix --o + Fixed operator++(int); // postfix o++ + Fixed operator--(int); // postfix o-- + + static const Fixed & min(Fixed const & lhs, Fixed const & rhs); + static const Fixed & max(Fixed const & lhs, Fixed const & rhs); + static Fixed & min(Fixed & lhs, Fixed & rhs); + static Fixed & max(Fixed & lhs, Fixed & rhs); int getRawBits(void) const; void setRawBits(int const raw); diff --git a/d02/ex02/main.cpp b/d02/ex02/main.cpp index 2ef4f05..1c84836 100644 --- a/d02/ex02/main.cpp +++ b/d02/ex02/main.cpp @@ -4,90 +4,96 @@ int main( void ) { -// Fixed a; -// Fixed const b( Fixed( 5.05f ) * Fixed( 2 ) ); -// -// std::cout << a << std::endl; -// std::cout << ++a << std::endl; -// std::cout << a << std::endl; -// std::cout << a++ << std::endl; -// std::cout << a << std::endl; -// -// std::cout << b << std::endl; -// -// std::cout << Fixed::max( a, b ) << std::endl + Fixed a; + Fixed const b( Fixed( 5.05f ) * Fixed( 2 ) ); - Fixed c(10); - Fixed d(5); - Fixed e; + std::cout << a << std::endl; + std::cout << ++a << std::endl; + std::cout << a << std::endl; + std::cout << a++ << std::endl; + std::cout << a << std::endl; - std::cout << "c: " << c << '\n'; - std::cout << "d: " << d << "\n\n"; + std::cout << b << std::endl; - // ">" - std::cout << "e = greater of (c, d) : e == " << (e = (c > d) ? c : d) << '\n'; - std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; - std::cout << "e > c ? : " << (e > c) << '\n'; - std::cout << "e > d ? : " << (e > d) << "\n\n"; - // "<" - std::cout << "e = smaller of (c, d) : e == " << (e = (c < d) ? c : d) << '\n'; - std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; - std::cout << "e < c ? : " << (e < c) << '\n'; - std::cout << "e < d ? : " << (e < d) << "\n\n"; - // "<=" - std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; - std::cout << "e <= c ? : " << (e <= c) << '\n'; - std::cout << "e <= d ? : " << (e <= d) << "\n\n"; - // ">=" - std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; - std::cout << "e >= c ? : " << (e >= c) << '\n'; - std::cout << "e >= d ? : " << (e >= d) << "\n\n"; - // "==" - std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; - std::cout << "e == c ? : " << (e == c) << '\n'; - std::cout << "e == d ? : " << (e == d) << "\n\n"; - // "!=" - std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; - std::cout << "e != c ? : " << (e != c) << '\n'; - std::cout << "e != d ? : " << (e != d) << "\n\n"; - // "+" - std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; - std::cout << "e = c + d : " << (e = c + d) << "\n"; - std::cout << "e = e + c + d : " << (e = e + c + d) << "\n\n"; - // "-" - std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; - std::cout << "e = d - e ? : " << (e = d - e) << "\n"; - std::cout << "e = c - d - e ? : " << (e = c - d - e) << "\n\n"; - // "*" - std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; - std::cout << "e = d * c ? : " << (e = d * c) << "\n"; - std::cout << "e = d * c * c ? : " << (e = d * c * c) << "\n\n"; - // "/" - std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; - std::cout << "e = d / c ? : " << (e = d / c) << "\n"; - std::cout << "e = d / c / e ? : " << (e = d / c / e) << "\n\n"; - // "+ - * /" - Fixed f; - Fixed g; - std::cout << "f:" << f << " e:" << e << " c:" << c << " d:" << d << '\n'; - std::cout << "f = e + d / c - d / e * c ? : " << (f = e + d / c - d / e * c) << '\n'; - std::cout << "g = d / c ? : " << std::setw(5) << std::left << (g = d / c) << "[f:" << std::setw(5) << std::left << f << " g:" << std::setw(5) << std::left << g << " e:" << e << " c:" << c << " d:" << d << "]\n"; - std::cout << "g = e + g ? : " << std::setw(5) << std::left << (g = e + g) << "[f:" << std::setw(5) << std::left << f << " g:" << std::setw(5) << std::left << g << " e:" << e << " c:" << c << " d:" << d << "]\n"; - std::cout << "f = d / e ? : " << std::setw(5) << std::left << (f = d / e) << "[f:" << std::setw(5) << std::left << f << " g:" << std::setw(5) << std::left << g << " e:" << e << " c:" << c << " d:" << d << "]\n"; - std::cout << "f = f * c ? : " << std::setw(5) << std::left << (f = f * c) << "[f:" << std::setw(5) << std::left << f << " g:" << std::setw(5) << std::left << g << " e:" << e << " c:" << c << " d:" << d << "]\n"; - std::cout << "f = g - f ? : " << std::setw(5) << std::left << (f = g - f) << "[f:" << std::setw(5) << std::left << f << " g:" << std::setw(5) << std::left << g << " e:" << e << " c:" << c << " d:" << d << "]\n"; - // "++x" + std::cout << Fixed::max( a, b ) << std::endl; + +// Fixed c(10); +// Fixed d(5); +// Fixed e; +// +// std::cout << "c: " << c << '\n'; +// std::cout << "d: " << d << "\n\n"; +// +// // ">" +// std::cout << "e = greater of (c, d) : e == " << (e = (c > d) ? c : d) << '\n'; +// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; +// std::cout << "e > c ? : " << (e > c) << '\n'; +// std::cout << "e > d ? : " << (e > d) << "\n\n"; +// // "<" +// std::cout << "e = smaller of (c, d) : e == " << (e = (c < d) ? c : d) << '\n'; +// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; +// std::cout << "e < c ? : " << (e < c) << '\n'; +// std::cout << "e < d ? : " << (e < d) << "\n\n"; +// // "<=" +// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; +// std::cout << "e <= c ? : " << (e <= c) << '\n'; +// std::cout << "e <= d ? : " << (e <= d) << "\n\n"; +// // ">=" +// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; +// std::cout << "e >= c ? : " << (e >= c) << '\n'; +// std::cout << "e >= d ? : " << (e >= d) << "\n\n"; +// // "==" +// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; +// std::cout << "e == c ? : " << (e == c) << '\n'; +// std::cout << "e == d ? : " << (e == d) << "\n\n"; +// // "!=" +// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; +// std::cout << "e != c ? : " << (e != c) << '\n'; +// std::cout << "e != d ? : " << (e != d) << "\n\n"; +// // "+" +// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; +// std::cout << "e = c + d : " << (e = c + d) << "\n"; +// std::cout << "e = e + c + d : " << (e = e + c + d) << "\n\n"; +// // "-" +// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; +// std::cout << "e = d - e ? : " << (e = d - e) << "\n"; +// std::cout << "e = c - d - e ? : " << (e = c - d - e) << "\n\n"; +// // "*" +// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; +// std::cout << "e = d * c ? : " << (e = d * c) << "\n"; +// std::cout << "e = d * c * c ? : " << (e = d * c * c) << "\n\n"; +// // "/" +// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; +// std::cout << "e = d / c ? : " << (e = d / c) << "\n"; +// std::cout << "e = d / c / e ? : " << (e = d / c / e) << "\n\n"; +// // "+ - * /" +// Fixed f; +// Fixed g; +// std::cout << "f:" << f << " e:" << e << " c:" << c << " d:" << d << '\n'; +// std::cout << "f = e + d / c - d / e * c ? : " << (f = e + d / c - d / e * c) << '\n'; +// std::cout << "g = d / c ? : " << std::setw(5) << std::left << (g = d / c) << "[f:" << std::setw(5) << std::left << f << " g:" << std::setw(5) << std::left << g << " e:" << e << " c:" << c << " d:" << d << "]\n"; +// std::cout << "g = e + g ? : " << std::setw(5) << std::left << (g = e + g) << "[f:" << std::setw(5) << std::left << f << " g:" << std::setw(5) << std::left << g << " e:" << e << " c:" << c << " d:" << d << "]\n"; +// std::cout << "f = d / e ? : " << std::setw(5) << std::left << (f = d / e) << "[f:" << std::setw(5) << std::left << f << " g:" << std::setw(5) << std::left << g << " e:" << e << " c:" << c << " d:" << d << "]\n"; +// std::cout << "f = f * c ? : " << std::setw(5) << std::left << (f = f * c) << "[f:" << std::setw(5) << std::left << f << " g:" << std::setw(5) << std::left << g << " e:" << e << " c:" << c << " d:" << d << "]\n"; +// std::cout << "f = g - f ? : " << std::setw(5) << std::left << (f = g - f) << "[f:" << std::setw(5) << std::left << f << " g:" << std::setw(5) << std::left << g << " e:" << e << " c:" << c << " d:" << d << "]\n\n"; +// // "/" +// c = Fixed(6); +// d = Fixed(10); +// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; +// std::cout << "e = c / d ? : " << (e = c / d) << "\n\n"; +// // "++x" +// e = Fixed(2); // std::cout << "e : " << e << '\n'; -// std::cout << "e++ : " << ++e << "\n\n"; +// std::cout << "++e : " << ++e << " ; e : " << e << "\n\n"; // // "--x" // std::cout << "e : " << e << '\n'; -// std::cout << "e-- : " << --e << "\n\n"; - // "x++" +// std::cout << "--e : " << --e << " ; e : " << e << "\n\n"; +// // "x++" // std::cout << "e : " << e << '\n'; -// std::cout << "e++ : " << e++ << "\n\n"; +// std::cout << "e++ : " << e++ << " ; e : " << e << "\n\n"; // // "x--" // std::cout << "e : " << e << '\n'; -// std::cout << "e-- : " << e-- << "\n\n"; +// std::cout << "e-- : " << e-- << " ; e : " << e << "\n\n"; return 0; } diff --git a/d02/ex02/operators b/d02/ex02/operators index 1311aab54b08c73ce2b9c3af2ff1ecf743019ce9..6117e7569aa8a2f22f44a26f2e84223a9a25b6c7 100755 GIT binary patch literal 23928 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