From 6b483dfa655e71d5dafd27e465e0979c8baaf06b Mon Sep 17 00:00:00 2001 From: LeottaAlberto Date: Tue, 4 Nov 2025 12:39:59 +0100 Subject: [PATCH 1/2] feat: convert a decimal number into a binary number --- exercises/binary_converter.cpp | 55 ++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/exercises/binary_converter.cpp b/exercises/binary_converter.cpp index 19bf37dd..6705a46e 100644 --- a/exercises/binary_converter.cpp +++ b/exercises/binary_converter.cpp @@ -5,3 +5,58 @@ Insert first number: 8 The binary number is: 1000 */ + +#include +#include + +int insertNumber(); +bool checkStringIsNumber(std::string in); +std::string binaryConvert(int number); + +const int ZERO = 48; +const int NINE = 57; +const int MAX_DIGIT = 10; +const int MINUS = 45; + +const std::string ERROR_COLOR = "\033[31m"; +const std::string NORMAL_COLOR = "\033[0m"; + +int main(){ + bool is_neg = false; + int number = insertNumber(); + + if(number < 0) { + number *= -1; + is_neg = true; + } + std::string convertedNumber = binaryConvert(number); + std::cout << "The binary number is: " << ((is_neg) ? "1|" : "") << convertedNumber; +} + +int insertNumber(){ + std::string insert; + bool isCorrect = true; + do { + if(!isCorrect) std::cout << ERROR_COLOR+("[Insert a valid input] ")+NORMAL_COLOR; + std::cout << "Insert first number: "; + getline(std::cin, insert); + } while(!(isCorrect = checkStringIsNumber(insert))); + + return std::stoi(insert); +} + +bool checkStringIsNumber(std::string in){ + if(in.empty()) return false; + if(in.size() > MAX_DIGIT) return false; + for(int i = 0; i < in.size(); i++) + if((in.at(i) < ZERO || in.at(i) > NINE) && in.at(i) != MINUS) return false; + + return true; +} + +std::string binaryConvert(int number){ + if(number == 0) return ""; + std::string temp = std::to_string(number % 2); + number /= 2; + return binaryConvert(number) + temp; +} \ No newline at end of file From 0b59c0f8c684613fd9a6b0aac00815856a88738c Mon Sep 17 00:00:00 2001 From: LeottaAlberto Date: Tue, 4 Nov 2025 14:50:11 +0100 Subject: [PATCH 2/2] style: erase a space into code --- exercises/binary_converter.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/exercises/binary_converter.cpp b/exercises/binary_converter.cpp index 6705a46e..ad06ed75 100644 --- a/exercises/binary_converter.cpp +++ b/exercises/binary_converter.cpp @@ -24,7 +24,6 @@ const std::string NORMAL_COLOR = "\033[0m"; int main(){ bool is_neg = false; int number = insertNumber(); - if(number < 0) { number *= -1; is_neg = true; @@ -48,9 +47,8 @@ int insertNumber(){ bool checkStringIsNumber(std::string in){ if(in.empty()) return false; if(in.size() > MAX_DIGIT) return false; - for(int i = 0; i < in.size(); i++) + for(int i = 0; i < in.size(); i++) if((in.at(i) < ZERO || in.at(i) > NINE) && in.at(i) != MINUS) return false; - return true; }