Summary Files Commits Branches @commit @diff @stats
path: root / src / teaching / upp-2025 / week10 / index.du
diff options
context:
space:
mode:
1 files changed, 72 insertions, 47 deletions
-rw-r--r--src/teaching/upp-2025/week10/index.du119
diff --git a/src/teaching/upp-2025/week10/index.du b/src/teaching/upp-2025/week10/index.du
index 5ec2926..c8d7f63 100644
--- a/src/teaching/upp-2025/week10/index.du
+++ b/src/teaching/upp-2025/week10/index.du
@@ -1,20 +1,20 @@
-# Задачи - УПП, Седмица 10, 04.12.2025
+'def title Задачи - УПП, Седмица 10, 04.12.2025
+'def desc Условията на задачите за упражнение.
-'define expected-reading 12 min
-'define created 01 December 2025
-'define edited 03 December 2025
-[$pagenav]
+# {title}
+
+{pagenav 12 min;01 December 2025;03 December 2025}
.important
-Едно от най-важните неща: [=всяка динамично-заделена памет трябва да се освободи преди края на програмата!=]
+Едно от най-важните неща: {b всяка динамично-заделена памет трябва да се освободи преди края на програмата!}
-GitHub Classroom: [url https://classroom.github.com/a/kDfmWmy7]
+GitHub Classroom: {url https://classroom.github.com/a/kDfmWmy7}
## За решаване
### Задача 1
-.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise01.cpp Решение]
+.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise01.cpp}
Потребителя ще въведе цяло неотрицателно число n.
След това ще въведе n на брой реални числа.
@@ -22,7 +22,8 @@ GitHub Classroom: [url https://classroom.github.com/a/kDfmWmy7]
Няма ограничения върху размера n.
-:table_2
+:table
+:2
|= Вход
|= Изход
@@ -33,16 +34,18 @@ GitHub Classroom: [url https://classroom.github.com/a/kDfmWmy7]
|: -24 -69 -45 93 -43 89 6 -91 -100 -15 -70 -82 -31.1 37 -53 -12 54 70 -56 86 -91 24 55 40 -19 94 -72 -90 5 91 70.01 57 -59 -59 87 -39 -46 10 -39 59 44 78 -28 63 -22 -98 45 -97 40.8
+
### Задача 2
-.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise02.cpp Решение]
+.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise02.cpp}
-Реализирайте функцията [`average`], която приема масив, съставен от цели числа, с произволен размер, и връща средното аритметично на всички тези числа.
+Реализирайте функцията {` average}, която приема масив, съставен от цели числа, с произволен размер, и връща средното аритметично на всички тези числа.
От входа ще получите размер n и след това 2n на брой цели числа.
Използвайки вашата функция, трябва да върнете средното аритметично на тези числа.
-:table_2
+:table
+:2
|= Вход
|= Изход
@@ -50,17 +53,19 @@ GitHub Classroom: [url https://classroom.github.com/a/kDfmWmy7]
|: -20.125
+
### Задача 3
-.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise03.cpp Решение]
+.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise03.cpp}
От входа получавате размерите на матрица, съставена от неотрицателни целочислени стойности, и след това всички стойности в самата матрица.
-[=В паметта=] обърнете реда на редовете и изкарайте резултата.
+{b В паметта} обърнете реда на редовете и изкарайте резултата.
.question
Може ли да се направи по по-прост начин, отколкото ако матрицата беше статично-заделена?
-:table_2
+:table
+:2
|= Вход
|= Изход
@@ -80,16 +85,18 @@ GitHub Classroom: [url https://classroom.github.com/a/kDfmWmy7]
1 2 3
+
### Задача 4
-.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise04.cpp Решение]
+.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise04.cpp}
От входа получавате две матрици и трябва да върнете тяхното умножение (ред по стълб).
За всяка матрица, първо получавате две цели неотрицателни стойности, размерите на матрицата, и след това получавате съответния брой реални числа.
Ако умножението не е възможно, изкарайте съобщение за грешка.
-:table_2
+:table
+:2
|= Вход
|= Изход
@@ -127,19 +134,21 @@ GitHub Classroom: [url https://classroom.github.com/a/kDfmWmy7]
Cannot multiply!
+
### Задача 5
-.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise05.cpp Решение]
+.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise05.cpp}
.note
-[*(07.12.2025)*] Оправено условие и пример
+{i (07.12.2025)} Оправено условие и пример
-Реализирайте функция [`largest`], която приема матрица, съставена от цели числа, с произволни размери, и връща най-големия елемент в нея.
+Реализирайте функция {` largest}, която приема матрица, съставена от цели числа, с произволни размери, и връща най-големия елемент в нея.
От входа получавате две числа, размери на матрица, и след това всички елементи в матрицата.
Използвайки вашата функция, върнете най-голямото число.
-:table_2
+:table
+:2
|= Вход
|= Изход
@@ -157,15 +166,17 @@ Cannot multiply!
|: 97
+
### Задача 6
-.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise06.cpp Решение]
+.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise06.cpp}
От входа получавате цели числа, докато не получите числото 0.
Трябва да върнете редицата, където всяко число е равно на сумата на себе си и следващото число.
Последното число не го променяйте.
-:table_2
+:table
+:2
|= Вход
|= Изход
@@ -176,9 +187,10 @@ Cannot multiply!
|: 1292 1284 1266 1300 1291 1280 780 777 0
+
### Задача 7
-.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise07.cpp Решение]
+.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise07.cpp}
Змия пълзи върху произволно голяма дъска, разделена на квадратна решетка.
Тя започва в клетка (0,0), която ще зачитаме за горния ляв ъгъл на дъската.
@@ -190,9 +202,10 @@ Cannot multiply!
След това получавате координат в дъската, трябва да върнете дали змията някога е посетила тази клетка.
.note
-[*(07.12.2025)*] Разменени ред и колона в примерите
+{i (07.12.2025)} Разменени ред и колона в примерите
-:table_2
+:table
+:2
|= Вход
|= Изход
@@ -215,9 +228,10 @@ Cannot multiply!
|: Not visited
+
### Задача 8
-.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise08.cpp Решение]
+.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise08.cpp}
От входа получавате преплетени елементите в два масива, съдържащи цели числа.
Тоест, първия елемент е първи на първия масив, втори елемент е първи на втория масив, третия елемент е втори на първия масив и так. нат.
@@ -226,7 +240,8 @@ Cannot multiply!
Числото 0 обозначава край на преплетената редица.
-:table_2
+:table
+:2
|= Вход
|= Изход
@@ -237,9 +252,10 @@ Cannot multiply!
|: 10 1 2
+
### Задача 9
-.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise09.cpp Решение]
+.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise09.cpp}
От входа получавате стойностите на "jagged" матрица: такава, където редовете имат различни размери в паметта.
Тоест, получавате размер на текущия ред и след това всичките му стойности.
@@ -248,7 +264,8 @@ Cannot multiply!
Трябва да изкарате, на отделни редове, стойностите във всяка "колона" отгоре надолу, започвайки от последната "колона" към първата.
Игнорирайте "дупки" от елементи.
-:table_2
+:table
+:2
|= Вход
|= Изход
@@ -269,9 +286,10 @@ Cannot multiply!
1 5 7 3
+
### Задача 10
-.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise10.cpp Решение]
+.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise10.cpp}
.important
Заемайте възможно най-малко памет!
@@ -286,9 +304,10 @@ Cannot multiply!
Трябва да върнете елементите по контура (краищата) на часовника, следвайки горното правило.
.note
-[*(07.12.2025)*] Поправен примера с четния размер
+{i (07.12.2025)} Поправен примера с четния размер
-:table_2
+:table
+:2
|= Вход
|= Изход
@@ -323,11 +342,12 @@ Cannot multiply!
|: 1 2 3 4 5 8 9 0 3 4 5 6 7 2 9 6
+
## За упражнение
### Задача 11
-.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise11.cpp Решение]
+.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise11.cpp}
От входа получавате цяло неотрицатлно число n, което обозначава степеннта на полином.
След това получавате реалните коефициенти пред всяка степен (започвайки от най-голямата, n).
@@ -336,9 +356,10 @@ Cannot multiply!
Трябва да върнете дали числото е корен на съответния полином.
.note
-[*(07.12.2025)*] Поправени примерите с първа степен полином
+{i (07.12.2025)} Поправени примерите с първа степен полином
-:table_2
+:table
+:2
|= Вход
|= Изход
@@ -367,9 +388,10 @@ Cannot multiply!
|: Is a root
+
### Задача 12
-.solution-link [url https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise12.cpp Решение]
+.solution-link {url Решение;https://github.com/Syndamia/upp-2025-solutions/tree/main/Week10/Exercise12.cpp}
.important
Заемайте възможно най-малко памет!
@@ -381,7 +403,8 @@ Cannot multiply!
След това получавате индекс и трябва да върнете стойността на съответния елемент.
-:table_2
+:table
+:2
|= Вход
|= Изход
@@ -392,6 +415,7 @@ Cannot multiply!
|: 0
+
### Задача 13
Магазин продава всеки ден стоки.
@@ -400,24 +424,24 @@ Cannot multiply!
След това влизате в "потребителски интерфейс", където от входа получавате буква, обозначаваща команда върху дневника.
Командите са:
.bulleted
-- [`e`] обозначава край на програмата
-- [`m`], получавате индекс на ден и трябва да върнете максималната продажба в този ден
-- [`M`], трябва да върнете индекса на най-печелившия ден
+- {` e} обозначава край на програмата
+- {` m}, получавате индекс на ден и трябва да върнете максималната продажба в този ден
+- {` M}, трябва да върнете индекса на най-печелившия ден
-[=Пример:=] [*(вход и изход са смесени, изходът е удебелен)*]
+{b Пример:} {i (вход и изход са смесени, изходът е удебелен)}
```
3
4 0.5 100 19.99 7
0
2 500 8
m 0
-[=100=]
+{b 100}
m 1
-[=0=]
+{b 0}
m 2
-[=500=]
+{b 500}
M
-[=2=]
+{b 2}
e
### Задача 14
@@ -435,7 +459,8 @@ e
След това, от входа получавате ред и колона.
Трябва да изкарате матрицата, без съответния ред и стълб.
-:table_2
+:table
+:2
|= Вход
|= Изход