diff --git a/cpp/binary/binary.cpp b/cpp/binary/binary.cpp new file mode 100644 index 0000000..04db253 --- /dev/null +++ b/cpp/binary/binary.cpp @@ -0,0 +1,31 @@ +#include "binary.h" + +namespace binary { + +unsigned convert(const std::string &input) +{ + unsigned result = 0; + unsigned factor = 1; + + for (auto i = input.crbegin(); i != input.crend(); ++i) { + + switch (*i) { + + case '0': + break; + + case '1': + result += factor; + break; + + default: + return 0; + } + + factor <<= 1; + } + + return result; +} + +} diff --git a/cpp/binary/binary.h b/cpp/binary/binary.h new file mode 100644 index 0000000..77a1324 --- /dev/null +++ b/cpp/binary/binary.h @@ -0,0 +1,11 @@ +#pragma once + +#define EXERCISM_RUN_ALL_TESTS + +#include + +namespace binary { + +unsigned int convert(const std::string&); + +}