modif d01 ex03 weapon gettype return ref sur const string, d02 ex02 fini
This commit is contained in:
@@ -8,7 +8,7 @@ Weapon::Weapon( std::string type ) {
|
|||||||
}
|
}
|
||||||
Weapon::~Weapon() {}
|
Weapon::~Weapon() {}
|
||||||
|
|
||||||
std::string Weapon::getType( void ) const {
|
std::string const & Weapon::getType( void ) const {
|
||||||
|
|
||||||
return this->_type;
|
return this->_type;
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ public:
|
|||||||
Weapon( std::string type );
|
Weapon( std::string type );
|
||||||
~Weapon();
|
~Weapon();
|
||||||
|
|
||||||
std::string getType() const;
|
std::string const & getType() const;
|
||||||
void setType( std::string type );
|
void setType( std::string type );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
BIN
d01/ex03/war
BIN
d01/ex03/war
Binary file not shown.
@@ -1,5 +1,6 @@
|
|||||||
#include "Fixed.hpp"
|
#include "Fixed.hpp"
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* functions to print numbers in binary
|
* functions to print numbers in binary
|
||||||
* for the float, found help from stackoverflow :
|
* for the float, found help from stackoverflow :
|
||||||
@@ -35,6 +36,7 @@ std::string printBitsFloat(float num)
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* statics variables initialisation
|
* statics variables initialisation
|
||||||
*
|
*
|
||||||
@@ -48,6 +50,7 @@ std::string printBitsFloat(float num)
|
|||||||
int const Fixed::_frac = 8;
|
int const Fixed::_frac = 8;
|
||||||
int const Fixed::_max = -1U >> (_frac +1);
|
int const Fixed::_max = -1U >> (_frac +1);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* default constructor / copy constructor / destructor
|
* default constructor / copy constructor / destructor
|
||||||
*/
|
*/
|
||||||
@@ -65,6 +68,7 @@ Fixed::~Fixed( void ) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* int and float constructors
|
* int and float constructors
|
||||||
*/
|
*/
|
||||||
@@ -80,9 +84,10 @@ Fixed::Fixed(float const floater) {
|
|||||||
if (floater < ~this->_max || floater > this->_max)
|
if (floater < ~this->_max || floater > this->_max)
|
||||||
std::cout << "error: float out of range" << '\n';
|
std::cout << "error: float out of range" << '\n';
|
||||||
else
|
else
|
||||||
this->_value = floater * (1 << this->_frac);
|
this->_value = roundf(floater * (1 << this->_frac));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* assignement operator
|
* assignement operator
|
||||||
*/
|
*/
|
||||||
@@ -93,8 +98,12 @@ Fixed & Fixed::operator=( Fixed const & rhs ) {
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* operators < ; > ; <= ; == ; != ; + ; - ; * ; / ; ++ ; --
|
* 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 {
|
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 {
|
Fixed Fixed::operator/ ( Fixed const & rhs ) const {
|
||||||
return Fixed( this->toFloat() / rhs.toFloat() );
|
return Fixed( this->toFloat() / rhs.toFloat() );
|
||||||
}
|
}
|
||||||
//void Fixed::operator++( void ){
|
Fixed Fixed::operator++() {
|
||||||
// this->_value += 1;
|
this->_value++;
|
||||||
//}
|
return *this;
|
||||||
//void Fixed::operator--( void ){
|
}
|
||||||
// this->_value -= 1;
|
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));
|
return ((float)this->_value / (float)(1 << this->_frac));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* overload "<<" -> output fixed point in float representation
|
* 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)
|
std::ostream & operator<<(std::ostream & o, Fixed const & rhs)
|
||||||
|
|||||||
@@ -26,8 +26,15 @@ public:
|
|||||||
Fixed operator- (Fixed const & rhs) const;
|
Fixed operator- (Fixed const & rhs) const;
|
||||||
Fixed operator* (Fixed const & rhs) const;
|
Fixed operator* (Fixed const & rhs) const;
|
||||||
Fixed operator/ (Fixed const & rhs) const;
|
Fixed operator/ (Fixed const & rhs) const;
|
||||||
// void operator++(void);
|
Fixed operator++(void); // prefix ++o
|
||||||
// void operator--(void);
|
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;
|
int getRawBits(void) const;
|
||||||
void setRawBits(int const raw);
|
void setRawBits(int const raw);
|
||||||
|
|||||||
@@ -4,90 +4,96 @@
|
|||||||
|
|
||||||
int main( void ) {
|
int main( void ) {
|
||||||
|
|
||||||
// Fixed a;
|
Fixed a;
|
||||||
// Fixed const b( Fixed( 5.05f ) * Fixed( 2 ) );
|
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 c(10);
|
std::cout << a << std::endl;
|
||||||
Fixed d(5);
|
std::cout << ++a << std::endl;
|
||||||
Fixed e;
|
std::cout << a << std::endl;
|
||||||
|
std::cout << a++ << std::endl;
|
||||||
|
std::cout << a << std::endl;
|
||||||
|
|
||||||
std::cout << "c: " << c << '\n';
|
std::cout << b << std::endl;
|
||||||
std::cout << "d: " << d << "\n\n";
|
|
||||||
|
|
||||||
// ">"
|
std::cout << Fixed::max( a, 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';
|
// Fixed c(10);
|
||||||
std::cout << "e > c ? : " << (e > c) << '\n';
|
// Fixed d(5);
|
||||||
std::cout << "e > d ? : " << (e > d) << "\n\n";
|
// Fixed e;
|
||||||
// "<"
|
//
|
||||||
std::cout << "e = smaller of (c, d) : e == " << (e = (c < d) ? c : d) << '\n';
|
// std::cout << "c: " << c << '\n';
|
||||||
std::cout << "e:" << e << " c:" << c << " d:" << d << '\n';
|
// std::cout << "d: " << d << "\n\n";
|
||||||
std::cout << "e < c ? : " << (e < c) << '\n';
|
//
|
||||||
std::cout << "e < d ? : " << (e < 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:" << e << " c:" << c << " d:" << d << '\n';
|
||||||
std::cout << "e <= c ? : " << (e <= c) << '\n';
|
// std::cout << "e > c ? : " << (e > c) << '\n';
|
||||||
std::cout << "e <= d ? : " << (e <= d) << "\n\n";
|
// std::cout << "e > d ? : " << (e > d) << "\n\n";
|
||||||
// ">="
|
// // "<"
|
||||||
std::cout << "e:" << e << " c:" << c << " d:" << d << '\n';
|
// std::cout << "e = smaller of (c, d) : e == " << (e = (c < d) ? c : d) << '\n';
|
||||||
std::cout << "e >= c ? : " << (e >= c) << '\n';
|
// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n';
|
||||||
std::cout << "e >= d ? : " << (e >= d) << "\n\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:" << e << " c:" << c << " d:" << d << '\n';
|
||||||
std::cout << "e == d ? : " << (e == d) << "\n\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:" << e << " c:" << c << " d:" << d << '\n';
|
||||||
std::cout << "e != d ? : " << (e != d) << "\n\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:" << c << " d:" << d << '\n';
|
||||||
std::cout << "e = e + c + d : " << (e = e + c + d) << "\n\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 = d - e ? : " << (e = d - e) << "\n";
|
// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n';
|
||||||
std::cout << "e = c - d - e ? : " << (e = c - d - e) << "\n\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 = d * c ? : " << (e = d * c) << "\n";
|
// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n';
|
||||||
std::cout << "e = d * c * c ? : " << (e = d * c * c) << "\n\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 / c ? : " << (e = d / c) << "\n";
|
// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n';
|
||||||
std::cout << "e = d / c / e ? : " << (e = d / c / e) << "\n\n";
|
// std::cout << "e = d - e ? : " << (e = d - e) << "\n";
|
||||||
// "+ - * /"
|
// std::cout << "e = c - d - e ? : " << (e = c - d - e) << "\n\n";
|
||||||
Fixed f;
|
// // "*"
|
||||||
Fixed g;
|
// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n';
|
||||||
std::cout << "f:" << f << " e:" << e << " c:" << c << " d:" << d << '\n';
|
// std::cout << "e = d * c ? : " << (e = d * c) << "\n";
|
||||||
std::cout << "f = e + d / c - d / e * c ? : " << (f = e + d / c - d / e * c) << '\n';
|
// std::cout << "e = d * c * c ? : " << (e = d * c * c) << "\n\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 << "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 << "e = d / c ? : " << (e = d / c) << "\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 << "e = d / c / e ? : " << (e = d / c / e) << "\n\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"
|
// 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';
|
||||||
// std::cout << "e++ : " << ++e << "\n\n";
|
// std::cout << "++e : " << ++e << " ; e : " << e << "\n\n";
|
||||||
// // "--x"
|
// // "--x"
|
||||||
// std::cout << "e : " << e << '\n';
|
// std::cout << "e : " << e << '\n';
|
||||||
// std::cout << "e-- : " << --e << "\n\n";
|
// std::cout << "--e : " << --e << " ; e : " << e << "\n\n";
|
||||||
// "x++"
|
// // "x++"
|
||||||
// std::cout << "e : " << e << '\n';
|
// std::cout << "e : " << e << '\n';
|
||||||
// std::cout << "e++ : " << e++ << "\n\n";
|
// std::cout << "e++ : " << e++ << " ; e : " << e << "\n\n";
|
||||||
// // "x--"
|
// // "x--"
|
||||||
// std::cout << "e : " << e << '\n';
|
// std::cout << "e : " << e << '\n';
|
||||||
// std::cout << "e-- : " << e-- << "\n\n";
|
// std::cout << "e-- : " << e-- << " ; e : " << e << "\n\n";
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user