diff --git a/ex00/ScalarConverter/ScalarConverter.cpp b/ex00/ScalarConverter/ScalarConverter.cpp index 6c4399c..f9b7197 100644 --- a/ex00/ScalarConverter/ScalarConverter.cpp +++ b/ex00/ScalarConverter/ScalarConverter.cpp @@ -49,12 +49,12 @@ void ScalarConverter::convert(const std::string &literal) convertFromSpecialCase(literal); else if (isChar(literal)) convertFromChar(literal); + else if(isInt(literal)) + convertFromInt(literal); else if(isFloat(literal)) convertFromFloat(literal); - else if(isDouble(literal)) + else if (isDouble(literal)) convertFromDouble(literal); - else if (isInt(literal)) - convertFromInt(literal); else std::cout << "Error: invalid literal" << std::endl; } @@ -101,8 +101,6 @@ bool ScalarConverter::isDouble(const std::string &literal) { char *end; - if (literal.find('.') == std::string::npos) - return (false); strtod(literal.c_str(), &end); if (*end != '\0') return (false); @@ -176,7 +174,10 @@ void ScalarConverter::convertFromFloat(const std::string &literal) std::cout << "char: Non displayable" << std::endl; else std::cout << "char: '" << static_cast(nb) << "'" << std::endl; - std::cout << "int: " << static_cast(nb) << std::endl; + if (nb > static_cast(INT_MAX) || nb < static_cast(INT_MIN)) + std::cout << "int: impossible" << std::endl; + else + std::cout << "int: " << static_cast(nb) << std::endl; std::cout << std::fixed << std::setprecision(1); std::cout << "float: " << nb << "f" << std::endl; std::cout << "double: " << static_cast(nb) << std::endl; @@ -194,7 +195,10 @@ void ScalarConverter::convertFromDouble(const std::string &literal) std::cout << "char: Non displayable" << std::endl; else std::cout << "char: '" << static_cast(nb) << "'" << std::endl; - std::cout << "int: " << static_cast(nb) << std::endl; + if (nb > static_cast(INT_MAX) || nb < static_cast(INT_MIN)) + std::cout << "int: impossible" << std::endl; + else + std::cout << "int: " << static_cast(nb) << std::endl; std::cout << std::fixed << std::setprecision(1); std::cout << "float: " << static_cast(nb) << "f" << std::endl; std::cout << "double: " << nb << std::endl;