Website Summary Files Commits Branches @commit @diff @stats
path: root / Week11 / Exercise06.cpp
diff options
context:
space:
mode:
Commit6bb7b68394ebebbc69e76bee59e9351386115453 (patch)
Author
 Syndamia <kamen@syndamia.com>
2025-12-14 21:56:30 +0200
Committer
 Syndamia <kamen@syndamia.com>
2025-12-14 21:56:30 +0200
Filesc31eb47780b5bfe4d038b6d6b8f32a385d717b96 /Week11/Exercise06.cpp
upp-2025-solutions-6bb7b68394ebebbc69e76bee59e9351386115453.tar
upp-2025-solutions-6bb7b68394ebebbc69e76bee59e9351386115453.tar.gz
upp-2025-solutions-6bb7b68394ebebbc69e76bee59e9351386115453.zip
Parent5ce214686e668bf185222b518b78d7f47a20b4fd (diff)
feat(Week11): Add solutions
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;
+}