Summary Files Commits Branches @commit @diff @stats
path: root / src / teaching
diff options
context:
space:
mode:
Commit03c1067259a52ac8e99c620cfb40a5d8e02ecb7c (patch)
Author
 Syndamia <kamen@syndamia.com>
2026-05-02 16:07:24 +0300
Committer
 Syndamia <kamen@syndamia.com>
2026-05-02 16:07:24 +0300
Files54643266db93ca66ff10c4f22abe46353e92899f /src/teaching
syndamia.com-03c1067259a52ac8e99c620cfb40a5d8e02ecb7c.tar
syndamia.com-03c1067259a52ac8e99c620cfb40a5d8e02ecb7c.tar.gz
syndamia.com-03c1067259a52ac8e99c620cfb40a5d8e02ecb7c.zip
Parent979ba55c33d6e9302317a3730610748cf6d3ccc7 (diff)
feat(teaching/oop-2025/w11): Add solutions
2 files changed, 14 insertions, 0 deletions
-rw-r--r--src/teaching/oop-2025/index.du1
-rw-r--r--src/teaching/oop-2025/week11/index.du13
diff --git a/src/teaching/oop-2025/index.du b/src/teaching/oop-2025/index.du
index 3fc9078..b64a369 100644
--- a/src/teaching/oop-2025/index.du
+++ b/src/teaching/oop-2025/index.du
@@ -133,3 +133,4 @@
|:
|:
[url ./week11 Задачи]
+|| [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week11 Решения]
diff --git a/src/teaching/oop-2025/week11/index.du b/src/teaching/oop-2025/week11/index.du
index d9c0c0a..7acd8cd 100644
--- a/src/teaching/oop-2025/week11/index.du
+++ b/src/teaching/oop-2025/week11/index.du
@@ -9,11 +9,15 @@
### Задача 1
+.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week11/Exercise01 Решение]
+
Реализирайте шаблонен клас [`Pair`], който пази две стойности от типове [`T`] и [`U`].
Реализирайте съотвените мутатори и селектори за константни и неконстантни обекти.
### Задача 2
+.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week11/Exercise02 Решение]
+
Реализирайте шаблонен клас [`Option`], който съхранява стойност от тип [`T`].
Нека конструкторите да [=не=] са публични.
@@ -30,6 +34,8 @@
### Задача 3
+.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week11/Exercise03 Решение]
+
Реализирайте шаблонен клас [`SharedPointer`], който пази динамично-заделен указател към тип [`T`].
Допълнително, класа следи за бройката свои [*инстанции*].
@@ -39,6 +45,7 @@
.note
Това е вид [url https://en.wikipedia.org/wiki/Smart_pointer "smart pointer"]: динамично-заделен указател който сам освобождава паметта си, без ние да пишем експлицитен [`delete`]!\n
В C++ има и други видове smart pointer-и, като "unique pointer" (който е описан в [url #-6 Задача 6]).
+
Добър въведителен ресурс по темата е [url https://courses.cs.washington.edu/courses/cse333/24au/lectures/16-c++-smartptr.pdf този].
Реализирайте [`operator*`] и [`operator->`], които съответстват на операциите върху запазения указател.
@@ -65,6 +72,8 @@ int main() {
### Задача 4
+.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week11/Exercise04 Решение]
+
Реализирайте шаблонен клас [`Vector`], който съхранява неограничено и оразмеряемо количество от обекти [`T`].
Освен голяма петица, реализирайте член-функции:
@@ -81,12 +90,16 @@ int main() {
### Задача 5
+.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week11/Exercise05 Решение]
+
Реализирайте клас [`DoubleVector`], който съхранява две неограничени и оразмеряеми количества от обекти, съответно от типове [`T`] и [`U`].
Имплементирайте голяма петица и член-функциите от [url #-4 Задача 4], обаче всяка трябва да е налична и за двете последователности от обекти.
### Задача 6
+.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week11/Exercise06 Решение]
+
Реализирайте шаблонен клас [`UniquePointer`], който пази указател към тип [`T`].
Класа трябва да осигури, че само един обект има този указател.
С други думи, [=не може да има копия=]!