Summary Files Commits Branches @commit @diff @stats
path: root / src
diff options
context:
space:
mode:
Commit4c212663b278cc3a2cfeffbe65b1961a57235b40 (patch)
Author
 Syndamia <kamen@syndamia.com>
2024-03-27 21:47:39 +0200
Committer
 Syndamia <kamen@syndamia.com>
2024-03-27 21:47:39 +0200
Filesa75475c6fe166c9e821af3b8dfec074fbe20d4d5 /src
syndamia.com-4c212663b278cc3a2cfeffbe65b1961a57235b40.tar
syndamia.com-4c212663b278cc3a2cfeffbe65b1961a57235b40.tar.gz
syndamia.com-4c212663b278cc3a2cfeffbe65b1961a57235b40.zip
Parentb5723e47e9734554605f413151dbf729d55dbfd5 (diff)
[te/oop-2023/w6] Added exercises
2 files changed, 84 insertions, 0 deletions
-rw-r--r--src/teaching/oop-2023/index.md1
-rw-r--r--src/teaching/oop-2023/week6/index.md83
diff --git a/src/teaching/oop-2023/index.md b/src/teaching/oop-2023/index.md
index 8f3858e..6d5156d 100644
--- a/src/teaching/oop-2023/index.md
+++ b/src/teaching/oop-2023/index.md
@@ -19,3 +19,4 @@
|3 |07.03.2024|[Задачи](./week3/) \|\| [Решения](https://github.com/Syndamia/oop-2023-solutions/tree/main/week03) \|\| [GitHub classroom](https://classroom.github.com/a/KPMqXsFp)|
|4 |14.03.2024|[Задачи](./week4/) \|\| [Решения](https://github.com/Syndamia/oop-2023-solutions/tree/main/week04) \|\| [GitHub classroom](https://classroom.github.com/a/qa_FfWeG)|
|5 |21.03.2024|[Задачи](./week5/) <!-- \|\| [Решения](https://github.com/Syndamia/oop-2023-solutions/tree/main/week05) --> \|\| [GitHub classroom](https://classroom.github.com/a/42ZZ56Mg)|
+|6 |28.03.2024|[Задачи](./week6/) <!-- \|\| [Решения](https://github.com/Syndamia/oop-2023-solutions/tree/main/week05) \|\| [GitHub classroom](https://classroom.github.com/a/42ZZ56Mg)-->|
diff --git a/src/teaching/oop-2023/week6/index.md b/src/teaching/oop-2023/week6/index.md
new file mode 100644
index 0000000..893013a
--- /dev/null
+++ b/src/teaching/oop-2023/week6/index.md
@@ -0,0 +1,83 @@
+# Задачи - ООП, Седмица 6, 28.03.2024
+
+<!-- GitHub classroom: [classroom.github.com/a/42ZZ56Mg](https://classroom.github.com/a/42ZZ56Mg) -->
+
+&:warn В задачите за файлове имплементирайте нужните проверки за съществуване на файлове.
+
+## Преговорни
+
+### 1 задача - Копиращ конструктор и оператор=
+
+Имплементирайте структура `WoodenPlank`, която скрито запазва ширина, дължина и височина на дъската (целочислено), цената ѝ (число с плаваща запетая) и типа дърво (низ с максимум 1024 знака).
+
+Имплементирайте get-ъри, set-ъри, копиращ конструктор, оператор=
+
+### 2 задача - Голяма четворка
+
+Имплементирайте структура `DynamicString`, която скрито запазва указател към низ (в динамичната памет) и неговия размер.
+
+Имплементирайте голяма четворка.
+
+## Лесни задачи
+
+### 3 задача
+
+Имплементирайте програма, която отваря файл (създава го, ако вече не е създаден) и вкарва текста "Hello World!" във файла.
+Името на файла се подава от стандартния вход на един ред.
+
+### 4 задача
+
+Имплементирайте програма, която приема име на файл от стандартния вход.
+Изкарайте последния ред от файла.
+
+Разделяме редове със знака `\n`.
+
+### 5 задача
+
+Имплементирайте програма, която приема име на файл от стандартния вход.
+Изкарайте броя редове и броя думи във файла.
+
+### 6 задача
+
+От стандартния вход получавате числата m и n, както и името на файл (на свой си ред).
+Изкарайте на екрана от m-тата до n-тата буква (включително) от всеки ред във файла.
+Първата буква на един ред е на индекс 1.
+
+### 7 задача
+
+От стандартния вход получавате, на два отделни реда, две имена на файлове.
+Вмъкнете съдържанието на втория файл по средата на първия файл.
+
+### 8 задача
+
+Имплементирайте структура `FileBuffer`, която в конструктора си приема име на файл, отваря го и запазва (копира) цялото му съдържание в динамичната памет.
+
+&:question Кога трябва да затворим файла?
+
+Имплементирайте голяма четворка.
+
+### 9 задача
+
+Имплементирайте структура `Person`, която приема име на човек (низ с максимална дължина от 1024 знака) и неговата възраст (целочислена стойност).
+Имплементирайте методи `Save` и `Load`, които съответно запазват/прочитат данните в (двоичен) файл с подадено име.
+
+## Трудни задачи
+
+### 10 задача
+
+Имплементирайте структура `Table`, която запазва произволен брой колони и редове с низови стойности.
+Броя редове/колони може да се уразмерява по време на изпълнение.
+Имплементирайте голяма четворка.
+
+Имплементирайте методи `AddRow` и `AddColumn`, които вмъкват подадените стойности като нов ред/колона на дадения индекс.
+Аналогично имплементирайте методи `RemoveRow` и `RemoveColumn`.
+**Чрез всички тези** имплементирайте метода `ModifyValue`, който променя стойността на клетката на дадените индекси.
+
+Имплементирайте методи `Save` и `Load`, които запазват/зреждат таблицата в/от файл с подадено име, в текстовия CSV формат (всеки ред в таблицата е ред във файла, всички стойности в реда от таблицата са разделени със запетая в реда във файла).
+
+### 11 задача
+
+Имплементирайте структура `City`, която запазва името на даден град (низ с максимална дължина от 1024 знака) и масив от указатели към други градове, които са негови съседи.
+Имплементирайте методи `AddNeighbour` и `RemoveNeighbour` (броя съседи може да се променя), както и голяма четворка.
+
+Имплементирайте методи `Save` и `Load`, които запазват/зреждат всичките достижими градове от сегашния в/от (бинарен) файл с подадено име.