Website Summary Files Commits Branches @commit @diff @stats
path: root / Week11 / Exercise06.cpp
diff options
context:
space:
mode:
1 files changed, 37 insertions, 0 deletions
-rw-r--r--Week11/Exercise06.cpp37
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;
+}