Summary Files Commits Branches @commit @diff @stats
path: root / src
diff options
context:
space:
mode:
Commit90e1b53bbe01d52eec7ef821eb9e40e69fa6f0ca (patch)
Author
 Syndamia <kamen@syndamia.com>
2024-04-04 08:13:25 +0300
Committer
 Syndamia <kamen@syndamia.com>
2024-04-04 08:13:25 +0300
Files305994a32f2dc07bd653035f857649c83b29ddea /src
syndamia.com-90e1b53bbe01d52eec7ef821eb9e40e69fa6f0ca.tar
syndamia.com-90e1b53bbe01d52eec7ef821eb9e40e69fa6f0ca.tar.gz
syndamia.com-90e1b53bbe01d52eec7ef821eb9e40e69fa6f0ca.zip
Parentc2e4d7c2c124f71c768072d8ccbe17aa8e06fa2c (diff)
[te/oop-2023/w7] Added exercises and github classroom link
2 files changed, 68 insertions, 0 deletions
-rw-r--r--src/teaching/oop-2023/index.md1
-rw-r--r--src/teaching/oop-2023/week7/index.md67
diff --git a/src/teaching/oop-2023/index.md b/src/teaching/oop-2023/index.md
index 942c082..78775d6 100644
--- a/src/teaching/oop-2023/index.md
+++ b/src/teaching/oop-2023/index.md
@@ -20,3 +20,4 @@
|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/week06) \|\| [GitHub classroom](https://classroom.github.com/a/rzSTn5pu)|
+|7 |04.04.2024|[Задачи](./week7/) <!-- \|\| [Решения](https://github.com/Syndamia/oop-2023-solutions/tree/main/week06) --> \|\| [GitHub classroom](https://classroom.github.com/a/vvZENbkX)|
diff --git a/src/teaching/oop-2023/week7/index.md b/src/teaching/oop-2023/week7/index.md
new file mode 100644
index 0000000..59e0f2d
--- /dev/null
+++ b/src/teaching/oop-2023/week7/index.md
@@ -0,0 +1,67 @@
+# Задачи - ООП, Седмица 7, 04.04.2024
+
+GitHub classroom: [classroom.github.com/a/vvZENbkX](https://classroom.github.com/a/vvZENbkX)
+
+## Преговорни
+
+### Задача 1 - Голяма петица
+
+Една съставка е композирана от низ (с максимална дължина от 511 знака) определящ името ѝ и грамаж (число с плаваща запетая).
+
+Създайте клас `Recipe`, към който могат да се прибавят и премахват произволен брой съставки.
+Имплементирайте голяма петица (голяма четворка плюс move семантики) за него.
+
+### Задача 2 - Работа с файлове
+
+От един ред на входа получавате името на текстови файл.
+Изкарайте на екрана средната една трета от файла, като буквите са в обратен ред.
+
+## Лесни задачи
+
+### Задача 3
+
+Имплементирайте клас `Thermometer`, който запазва максималната и минималната възможна температура за измерване, както и сегашната температура, всичките които са цели неотрицателни числа.
+
+Имплементирайте методи `SaveText` и `LoadText`, които съответно записват и четат (тоест член-данните стават равни на тези от файла) данните си в/от **текстови** файл с подадено име.
+Аналогично имплементирайте `SaveBinary` и `LoadBinary`, които работят с **двоични** файлове.
+
+### Задача 4
+
+Имплементирайте клас `Street`, който запазва скрито името на улицата като низ с произволна дължина и номер като цяло число.
+Имплементирайте голяма петица.
+
+Имплементирайте методите `SaveText`, `LoadText`, `SaveBinary`, `LoadBinary`.
+
+### Задача 5
+
+За един транспортен билет е нужно скрито да пазим началната и крайната дестинация като динамично-заделени низове с произволна дължина, неговата цена като число с плаваща запетая и идентификационен номер като цяло неотрицателно число.
+
+Имплементирайте голяма петица и четирите функции за запазване и четене от файлове на съответния клас.
+
+### Задача 6
+
+Имплементирайте клас `Matrix`, който запазва стойностите на матрица 2 на 2.
+Предефинирайте операторите за инкрементиране, декрементиране, събиране, изваждане, умножение и вход/изход от/към поток.
+
+### Задача 7
+
+Имплементирайте клас `Paragraph`, който съдържа текст с много редове в него.
+Текстът се запазва като низ с произволна дължина, а редовете се разделят със знака `'\n'`.
+Имплементирайте голяма петица.
+
+Имплементирайте операторите за събиране, които копират текстът от подадения параграф и го вмъкват в края на сегашния; оператор[] който връща начален указател на i-тия ред; операторите за (лексикографско) сравнение; вход/изход от/към поток.
+
+## Трудни задачи
+
+### Задача 8
+
+Имплементирайте клас `MatrixNМ`, който запазва стойностите на матрица с N реда и M колони (подадени на конструктор).
+Имплементирайте голяма петица.
+
+Имплементирайте операторите за събиране, изваждане, умножение и деление (нека да дефинираме деление на две матрици като умножението на първата матрица по транспонираната втората матрица върху детерминантата ѝ).
+Ако някоя операция не е възможна, върнете съответна стойност по подразбиране.
+
+Имплементирайте оператор[], като индекса i е числена конкатенация на двете координати, разделени с нула (тоест ако искаме стойността на ред 27 и колона 9, тогава ще въведем индекса 2709).
+Имплементирайте оператори за равенство, инкрементиране, декрементиране, побитово отместване (прилага се върху всяка стойност в матрицата), логически (&& връща true само ако двете матрици са равни, || връща true ако имат еднакви размерности и съществува поне един равен елемент на еднакви индекси).
+
+Имплементирайте четирите функции за записване и четене от файлове.