diff options
feat(Week11): Add solutions
1 files changed, 37 insertions, 0 deletions
| -rw-r--r-- | Week11/Exercise06.cpp | 37 |
diff --git a/Week11/Exercise06.cpp b/Week11/Exercise06.cpp new file mode 100644 index 0000000..82860d1 --- /dev/null +++ b/Week11/Exercise06.cpp @@ -0,0 +1,37 @@ +#include <iostream> + +int main() { + const unsigned MAX_LENGTH = 128; + char num[MAX_LENGTH]; + std::cin.getline(num, MAX_LENGTH); + + const char* digit = num + 2; + unsigned long number = 0; + + while (*digit != '\0') { + // Когато разглеждахме операции с цифри (добавяне/премахване на цифра от число), + // тогава говорехме как с деление на 10 премаваме цифра и с умножение на 10 я + // добавяме в десния край на числото. + // + // Това работи, защото цифрите ни са в десетична бройна система. Ако работехме + // например с двоична, тогава щяхме да делим и умножаваме с 2, за да махаме/добавяме + // "цифри" в края на числото (да се има впредвид, че резултата ще е в 10тична бройна + // система). + // + // Аналогично, понеже работим с 16тична, правим операции с числото 16. + + if ('0' <= *digit && *digit <= '9') { + number = number * 16 + (*digit - '0'); + } + // А e 10, B е 11, ..., F е 15 + else if ('A' <= *digit && *digit <= 'F') { + number = number * 16 + (*digit - 'A' + 10); + } + + ++digit; + } + + std::cout << number << std::endl; + + return 0; +} |
