Гледайте видео-урок по тази глава тук:
2
30|2|Имаме **2** работника, всеки вози по **30** тухли на курс. Общо работниците возят по **60** тухли на курс. За да превозят **120** тухли, са необходими точно **2** курса.|
-|Вход|Изход|Обяснения|
+| Input | Output | Comments |
|----|----|----|
|355
3
10|12|Имаме **3** работника, всеки вози по **10** тухли на курс. Общо работниците возят по **30** тухли на курс. За да превозят **355** тухли, са необходими точно **12** курса: **11** пълни курса превозват **330** тухли и последният **12**-ти курс пренася последните **25** тухли.|
-|Вход|Изход|Обяснения|
+| Input | Output | Comments |
|----|----|----|
|5
12
30|1|Имаме **5** работника, всеки вози по **30** тухли на курс. Общо работниците возят по **150** тухли на курс. За да превозят **5** тухли, е достатъчен само **1** курс (макар и непълен, само с 5 тухли).|
\ No newline at end of file
diff --git a/Content/Chapter-8-1-exam-preparation/simple-calculations-problems/bricks/calc-and-print-needed-courses.md b/Content/Chapter-8-1-exam-preparation/simple-calculations-problems/bricks/calc-and-print-needed-courses.md
index 2d97d0700..87b87fffa 100644
--- a/Content/Chapter-8-1-exam-preparation/simple-calculations-problems/bricks/calc-and-print-needed-courses.md
+++ b/Content/Chapter-8-1-exam-preparation/simple-calculations-problems/bricks/calc-and-print-needed-courses.md
@@ -8,6 +8,6 @@
![](/assets/chapter-8-1-images/02.Bricks-04.png)
-#### Тестване в Judge системата
+#### Testing in the Judge System
Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/516#1](https://judge.softuni.bg/Contests/Practice/Index/516#1).
\ No newline at end of file
diff --git a/Content/Chapter-8-1-exam-preparation/simple-calculations-problems/bricks/read-input-data-and-calc-bricks-per-course.md b/Content/Chapter-8-1-exam-preparation/simple-calculations-problems/bricks/read-input-data-and-calc-bricks-per-course.md
index 24478e820..0b0c49df5 100644
--- a/Content/Chapter-8-1-exam-preparation/simple-calculations-problems/bricks/read-input-data-and-calc-bricks-per-course.md
+++ b/Content/Chapter-8-1-exam-preparation/simple-calculations-problems/bricks/read-input-data-and-calc-bricks-per-course.md
@@ -1,4 +1,4 @@
-#### Прочитане на входните данни и изчисляване броя тухли за един курс
+#### Reading the Input Data и изчисляване броя тухли за един курс
Входът е стандартен, като единствено трябва да внимаваме за последователността, в която прочитаме данните.
diff --git a/Content/Chapter-8-1-exam-preparation/simple-calculations-problems/triangle-area/calc-and-print-triangle-area.md b/Content/Chapter-8-1-exam-preparation/simple-calculations-problems/triangle-area/calc-and-print-triangle-area.md
index c000f4563..893b5623a 100644
--- a/Content/Chapter-8-1-exam-preparation/simple-calculations-problems/triangle-area/calc-and-print-triangle-area.md
+++ b/Content/Chapter-8-1-exam-preparation/simple-calculations-problems/triangle-area/calc-and-print-triangle-area.md
@@ -8,6 +8,6 @@
![](/assets/chapter-8-1-images/01.Triangle-area-06.png)
-#### Тестване в Judge системата
+#### Testing in the Judge System
Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/516#0](https://judge.softuni.bg/Contests/Practice/Index/516#0).
\ No newline at end of file
diff --git a/Content/Chapter-8-1-exam-preparation/simple-calculations-problems/triangle-area/read-input-data.md b/Content/Chapter-8-1-exam-preparation/simple-calculations-problems/triangle-area/read-input-data.md
index c201622db..c1bdf5c37 100644
--- a/Content/Chapter-8-1-exam-preparation/simple-calculations-problems/triangle-area/read-input-data.md
+++ b/Content/Chapter-8-1-exam-preparation/simple-calculations-problems/triangle-area/read-input-data.md
@@ -1,4 +1,4 @@
-#### Прочитане на входните данни
+#### Reading the Input Data
Изключително важно при подобен тип задачи, при които се подават някакви координати, е да обърнем внимание на **реда**, в който се подават, както и правилно да осмислим кои от координатите ще използваме и по какъв начин. В случая, на входа се подават **x1, y1, x2, y2, x3, y3** в този си ред. Ако не спазваме тази последователност, решението става грешно. Първо пишем кода, който чете подадените данни:
diff --git a/Content/Chapter-8-1-exam-preparation/simple-calculations-problems/triangle-area/triangle-area.md b/Content/Chapter-8-1-exam-preparation/simple-calculations-problems/triangle-area/triangle-area.md
index d894ee421..da5ee2a2f 100644
--- a/Content/Chapter-8-1-exam-preparation/simple-calculations-problems/triangle-area/triangle-area.md
+++ b/Content/Chapter-8-1-exam-preparation/simple-calculations-problems/triangle-area/triangle-area.md
@@ -1,4 +1,4 @@
-### Задача: лице на триъгълник в равнината
+### Problem: лице на триъгълник в равнината
-#### Вход
+#### Input
От конзолата се четат **6 цели числа** (по едно на ред):
**x1, y1, x2, y2, x3, y3.**
- Всички входни числа са в диапазона [**-1000 … 1000**].
- Гарантирано е, че **y2 = y3**.
-#### Изход
+#### Output
Да се отпечата на конзолата **лицето на триъгълника**.
-#### Примерен вход и изход
+#### Sample Input and Output
-|Вход|Изход|Чертеж|Обяснения|
+| Input | Output | Visualization | Comments |
|----|----|----|----|
|5
-2
6
1
1
1|7.5|![](/assets/chapter-8-1-images/01.Triangle-area-01.png)|Страната на триъгълника **а** = 6 - 1 = **5**
Височината на триъгълника **h** = 1 - (-2) = **3**
Лицето на триъгълника **S** = a \* h / 2 = 5 \* 3 / 2 = **7.5**|
-|Вход|Изход|Чертеж|Обяснения|
+| Input | Output | Visualization | Comments |
|----|----|----|----|
|4
1
-1
-3
3
-3|8|![](/assets/chapter-8-1-images/01.Triangle-area-02.png)|Страната на триъгълника **а** = 3 - (-1) = **4**
Височината на триъгълника **h** = 1 - (-3) = **4**
Лицето на триъгълника **S** = a \* h / 2 = 4 \* 4 / 2 = **8**|
diff --git a/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-in-figure/determining-point-location.md b/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-in-figure/determining-point-location.md
index 31228008c..3706a3a4b 100644
--- a/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-in-figure/determining-point-location.md
+++ b/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-in-figure/determining-point-location.md
@@ -12,6 +12,6 @@
![](/assets/chapter-8-1-images/04.Point-in-figure-06.png)
-#### Тестване в Judge системата
+#### Testing in the Judge System
Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/516#3](https://judge.softuni.bg/Contests/Practice/Index/516#3).
\ No newline at end of file
diff --git a/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-in-figure/guidelines.md b/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-in-figure/guidelines.md
index 76cbf3150..a317fd2f3 100644
--- a/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-in-figure/guidelines.md
+++ b/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-in-figure/guidelines.md
@@ -1,4 +1,4 @@
-#### Насоки и подсказки
+#### Hints and Guidelines
За да разберем дали **точката** е във фигурата, ще разделим **фигурата** на 2 четириъгълника:
diff --git a/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-in-figure/point-in-figure.md b/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-in-figure/point-in-figure.md
index f99591396..213271aed 100644
--- a/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-in-figure/point-in-figure.md
+++ b/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-in-figure/point-in-figure.md
@@ -1,25 +1,25 @@
-### Задача: точка във фигура
+### Problem: точка във фигура
Да се напише програма, която проверява дали дадена точка (с координати **x** и **y**) е **вътре** или **извън** следната фигура:
![](/assets/chapter-8-1-images/04.Point-in-figure-01.png)
-#### Вход
+#### Input
От конзолата се четат **две цели числа** (по едно на ред): **x** и **y**.
Всички входни числа са цели и в диапазона **[-1000 … 1000]**.
-#### Изход
+#### Output
Да се отпечата на конзолата "**in**" или "**out**" – дали точката е **вътре** или **извън** фигурата (на контура е вътре).
-#### Примерен вход и изход
+#### Sample Input and Output
-|Вход|Изход|Вход|Изход|
+| Input | Output | Input | Output |
|----|----|----|----|
|8
-5|in|6
-3|in|
-|Вход|Изход|Вход|Изход|
+| Input | Output | Input | Output |
|----|----|----|----|
|11
-5|out|11
2|out|
\ No newline at end of file
diff --git a/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-on-segment/determining-if-point-is-in-or-out-and-print-result.md b/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-on-segment/determining-if-point-is-in-or-out-and-print-result.md
index 5e666b597..d1756453c 100644
--- a/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-on-segment/determining-if-point-is-in-or-out-and-print-result.md
+++ b/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-on-segment/determining-if-point-is-in-or-out-and-print-result.md
@@ -8,6 +8,6 @@
![](/assets/chapter-8-1-images/03.Point-on-segment-08.png)
-#### Тестване в Judge системата
+#### Testing in the Judge System
Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/516#2](https://judge.softuni.bg/Contests/Practice/Index/516#2).
\ No newline at end of file
diff --git a/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-on-segment/point-on-segment.md b/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-on-segment/point-on-segment.md
index 3703e178f..c97f3557c 100644
--- a/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-on-segment/point-on-segment.md
+++ b/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-on-segment/point-on-segment.md
@@ -1,8 +1,8 @@
-### Задача: точка върху отсечка
+### Problem: точка върху отсечка
Върху хоризонтална права е разположена **хоризонтална отсечка**, зададена с **x** координатите на двата си края: **first** и **second**. **Точка** е разположена **върху** същата хоризонтална права и е зададена с **x координатата** си. Напишете програма, която проверява дали точката е **вътре или вън от отсечката** и изчислява **разстоянието до по-близкия край** на отсечката.
-#### Вход
+#### Input
От конзолата се четат **3 цели числа** (по едно на ред):
- На първия ред стои числото first – **единия край на отсечката**.
@@ -11,22 +11,22 @@
Всички входни числа са цели и в диапазона [**-1000 … 1000**].
-#### Изход
+#### Output
Резултатът да се отпечата на конзолата:
- На първия ред да се отпечата "**in**" или "**out**" – дали точката е върху отсечката или извън нея.
- На втория ред да се отпечата разстоянието от точката до най-близкия край на отсечката.
-#### Примерен вход и изход
+#### Sample Input and Output
-|Вход|Изход|Визуализация|
-|---|---|---|
+| Input | Output | Visualization |
+| --- | --- | --- |
|10
5
7|in
2|![](/assets/chapter-8-1-images/03.Point-on-segment-01.png)|
-|Вход|Изход|Визуализация|
-|---|---|---|
+| Input | Output | Visualization |
+| --- | --- | --- |
|8
10
5|out
3|![](/assets/chapter-8-1-images/03.Point-on-segment-02.png)|
-|Вход|Изход|Визуализация|
-|---|---|---|
+| Input | Output | Visualization |
+| --- | --- | --- |
|1
-2
3|out
2|![](/assets/chapter-8-1-images/03.Point-on-segment-03.png)|
\ No newline at end of file
diff --git a/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-on-segment/read-input-data-and-calc-min-distance.md b/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-on-segment/read-input-data-and-calc-min-distance.md
index 74f65caad..17b29a3f6 100644
--- a/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-on-segment/read-input-data-and-calc-min-distance.md
+++ b/Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-on-segment/read-input-data-and-calc-min-distance.md
@@ -1,4 +1,4 @@
-#### Прочитане на входните данни и изчисляване на разстоянието до най-близкич край на отсечката
+#### Reading the Input Data и изчисляване на разстоянието до най-близкич край на отсечката
Четем входа от конзолата.
diff --git a/Content/Chapter-8-1-exam-preparation/simple-loops-problems/increasing-elements/find-and-print-longest-sequence.md b/Content/Chapter-8-1-exam-preparation/simple-loops-problems/increasing-elements/find-and-print-longest-sequence.md
index fda4ee3f2..267dff250 100644
--- a/Content/Chapter-8-1-exam-preparation/simple-loops-problems/increasing-elements/find-and-print-longest-sequence.md
+++ b/Content/Chapter-8-1-exam-preparation/simple-loops-problems/increasing-elements/find-and-print-longest-sequence.md
@@ -8,6 +8,6 @@
![](/assets/chapter-8-1-images/08.Increasing-numbers-04.png)
-#### Тестване в Judge системата
+#### Testing in the Judge System
Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/516#7](https://judge.softuni.bg/Contests/Practice/Index/516#7).
\ No newline at end of file
diff --git a/Content/Chapter-8-1-exam-preparation/simple-loops-problems/increasing-elements/increasing-elements.md b/Content/Chapter-8-1-exam-preparation/simple-loops-problems/increasing-elements/increasing-elements.md
index 0fa1206c1..16013e4b7 100644
--- a/Content/Chapter-8-1-exam-preparation/simple-loops-problems/increasing-elements/increasing-elements.md
+++ b/Content/Chapter-8-1-exam-preparation/simple-loops-problems/increasing-elements/increasing-elements.md
@@ -1,17 +1,17 @@
-### Задача: поредица от нарастващи елементи
+### Problem: поредица от нарастващи елементи
Дадена е редица от **n** числа: **a1**, **a2**, **…**, **an**. Да се пресметне **дължината на най-дългата нарастваща поредица** от последователни елементи в редицата от числа.
-#### Вход
+#### Input
Входните данни се четат от конзолата. На първия ред стои цяло число **n** (**0 ≤ n ≤ 1000**). На следващите **n** реда стоят **n** цели числа в интервала [**-1000 … 1000**]: **a1**, **a2**, **…**, **an**.
-#### Изход
+#### Output
На конзолата трябва да се отпечата едно число – **дължината** на най-дългата нарастваща редица.
-#### Примерен вход и изход
+#### Sample Input and Output
-|Вход|Изход|Вход|Изход|Вход|Изход|Вход|Изход|
-|---|---|---|---|---|---|---|---|
+| Input | Output | Input | Output | Input | Output | Input | Output |
+| --- | --- | --- | --- | --- | --- | --- | --- |
|3
5
2
4|2|4
2
8
7
6|2|4
1
2
4
4|3|4
5
6
7
8|2|
\ No newline at end of file
diff --git a/Content/Chapter-8-1-exam-preparation/simple-loops-problems/increasing-elements/read-input-data-and-create-additional-variables.md b/Content/Chapter-8-1-exam-preparation/simple-loops-problems/increasing-elements/read-input-data-and-create-additional-variables.md
index 55f59e223..88c100ea4 100644
--- a/Content/Chapter-8-1-exam-preparation/simple-loops-problems/increasing-elements/read-input-data-and-create-additional-variables.md
+++ b/Content/Chapter-8-1-exam-preparation/simple-loops-problems/increasing-elements/read-input-data-and-create-additional-variables.md
@@ -1,4 +1,4 @@
-#### Прочитане на входните данни и съставяне на допълнителни променливи
+#### Reading the Input Data и съставяне на допълнителни променливи
За решението на тази задача трябва да помислим малко **по-алгоритмично**. Дадена ни е **редица от числа** и трябва да проверяваме дали всяко **следващо**, ще бъде **по-голямо от предното** и ако е така да броим колко дълга е редицата, в която това условие е изпълнено. След това трябва да намерим **коя редица** от всички такива е **най-дълга**. За целта, нека да си направим няколко променливи, които ще ползваме през хода на задачата.
diff --git a/Content/Chapter-8-1-exam-preparation/simple-loops-problems/sum-step-3/allocating-numbers-and-print-results.md b/Content/Chapter-8-1-exam-preparation/simple-loops-problems/sum-step-3/allocating-numbers-and-print-results.md
index a6158175f..d930356e7 100644
--- a/Content/Chapter-8-1-exam-preparation/simple-loops-problems/sum-step-3/allocating-numbers-and-print-results.md
+++ b/Content/Chapter-8-1-exam-preparation/simple-loops-problems/sum-step-3/allocating-numbers-and-print-results.md
@@ -8,6 +8,6 @@
![](/assets/chapter-8-1-images/07.Sums-Step-3-04.png)
-#### Тестване в Judge системата
+#### Testing in the Judge System
Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/516#6](https://judge.softuni.bg/Contests/Practice/Index/516#6).
\ No newline at end of file
diff --git a/Content/Chapter-8-1-exam-preparation/simple-loops-problems/sum-step-3/read-input-data.md b/Content/Chapter-8-1-exam-preparation/simple-loops-problems/sum-step-3/read-input-data.md
index 4cfd439ac..24ce1e9cf 100644
--- a/Content/Chapter-8-1-exam-preparation/simple-loops-problems/sum-step-3/read-input-data.md
+++ b/Content/Chapter-8-1-exam-preparation/simple-loops-problems/sum-step-3/read-input-data.md
@@ -1,4 +1,4 @@
-#### Прочитане на входните данни
+#### Reading the Input Data
Ще вземем **броя на числата** от конзолата и ще декларираме **начални стойности** на трите суми.
diff --git a/Content/Chapter-8-1-exam-preparation/simple-loops-problems/sum-step-3/sum-step-3.md b/Content/Chapter-8-1-exam-preparation/simple-loops-problems/sum-step-3/sum-step-3.md
index 956c4120c..3b5bdaa52 100644
--- a/Content/Chapter-8-1-exam-preparation/simple-loops-problems/sum-step-3/sum-step-3.md
+++ b/Content/Chapter-8-1-exam-preparation/simple-loops-problems/sum-step-3/sum-step-3.md
@@ -1,20 +1,20 @@
-### Задача: суми през 3
+### Problem: суми през 3
Дадени са **n** цели числа **a1, a2, …, an**. Да се пресметнат сумите:
- **sum1 = a1 + a4 + a7** + … (сумират се числата, започвайки от първото със стъпка 3).
- **sum2 = a2 + a5 + a8** + … (сумират се числата, започвайки от второто със стъпка 3).
- **sum3 = a3 + a6 + a9** + … (сумират се числата, започвайки от третото със стъпка 3).
-#### Вход
+#### Input
Входните данни се четат от конзолата. На първия ред стои цяло число **n (0 ≤ n ≤ 1000)**. На следващите **n** реда стоят **n** цели числа в интервала [**-1000 … 1000**]: **a1, a2, …, an**.
-#### Изход
+#### Output
На конзолата трябва да се отпечатат 3 реда, съдържащи търсените 3 суми, във формат като в примерите.
-#### Примерен вход и изход
+#### Sample Input and Output
-|Вход|Изход|Вход|Изход|Вход|Изход|
-|---|---|---|---|---|---|
+| Input | Output | Input | Output | Input | Output |
+| --- | --- | --- | --- | --- | --- |
|2
3
5
|sum1 = 3
sum2 = 5
sum3 = 0|4
7
-2
6
12|sum1 = 19
sum2 = -2
sum3 = 6|5
3
5
2
7
8|sum1 = 10
sum2 = 13
sum3 = 2|
\ No newline at end of file
diff --git a/Content/Chapter-8-2-exam-preparation-part-2/change-tiles/change-tiles.md b/Content/Chapter-8-2-exam-preparation-part-2/change-tiles/change-tiles.md
index 96e93aefd..faaa37e22 100644
--- a/Content/Chapter-8-2-exam-preparation-part-2/change-tiles/change-tiles.md
+++ b/Content/Chapter-8-2-exam-preparation-part-2/change-tiles/change-tiles.md
@@ -1,8 +1,8 @@
-## Задача: смяна на плочки
+## Problem: смяна на плочки
Хараламби има **събрани пари**, с които иска да **смени плочките на пода в банята**. Като **подът е правоъгълник**, а **плочките са триъгълни**. Напишете **програма**, която да **пресмята дали събраните пари ще му стигнат**. **От конзолата се четат широчината и дължината на пода**, както и **едната страна на триъгълника с височината към нея**. Трябва да **пресметнете колко плочки са нужни,** за да се покрие пода. **Броят** на плочките **трябва да се закръгли към по-високо цяло число** и **да се прибавят още 5 броя** за фира. **От конзолата се четат** още – **цената на плочка** и **сумата за работата** на майстор.
-### Входни данни
+### Input Data
От конзолата се четат 7 реда:
* **Събраните пари**.
@@ -15,7 +15,7 @@
**Всички** числа са реални числа в интервала [**0.00 … 5000.00**].
-### Изходни данни
+### Output Data
На конзолата трябва да се отпечата на **един ред**:
@@ -26,12 +26,12 @@
Резултатът трябва да е **форматиран до втория символ** след десетичния знак.
-### Примерен вход и изход
+### Sample Input and Output
-|Вход|Изход|Обяснения|
+| Input | Output | Comments |
|-----|-----|-----|
|500
3
2.5
0.5
0.7
7.80
100|25.60 lv left.|**Площ на пода** → 3 \* 2.5 = **7.5**
**Площта на плочка** → 0.5 \* 0.7 / 2 = **0.175**
**Необходими плочки** → 7.5 / 0.175 = 42.857… = **43 + 5 фира** = **48**
**Обща сума** → 48 \* 7.8 + 100 (майстор) = **474.4**
**474.4 < 500** → **остават 25.60 лева**|
-|Вход|Изход|Обяснения|
+| Input | Output | Comments |
|-----|-----|-----|
|1000
5.55
8.95
0.90
0.85
13.99
321|You'll need 1209.65 lv more.|**Площ на пода** → 5.55 \* 8.95 = **49.67249**
**Площта на плочка** → 0.9 \* 0.85 / 2 = **0.3825**
**Необходими плочки** → 49.67249 / 0.3825 = 129.86… = **130 + 5 фира** = **135**
**Обща сума** → 135 * 13.99 + 321 (майстор) = **2209.65**
**2209.65 > 1000** → **не достигат 1209.65 лева**|
diff --git a/Content/Chapter-8-2-exam-preparation-part-2/change-tiles/guidelines.md b/Content/Chapter-8-2-exam-preparation-part-2/change-tiles/guidelines.md
index 7bfccf8c8..d2fd1fb3e 100644
--- a/Content/Chapter-8-2-exam-preparation-part-2/change-tiles/guidelines.md
+++ b/Content/Chapter-8-2-exam-preparation-part-2/change-tiles/guidelines.md
@@ -1,4 +1,4 @@
-### Насоки и подсказки
+### Hints and Guidelines
Следващата задача изисква от нашата програма да приема повече входни данни и извърши по-голям брой изчисления, въпреки че решението е **идентично**. Приемането на данните от потребителя извършваме по добре **познатия ни начин**. Обърнете внимание, че в раздел **Вход** в условието е упоменато, че всички входни данни ще бъдат **реални числа** и поради тази причина бихме използвали тип **`decimal`**.
@@ -16,6 +16,6 @@
До крайния резултат можем да стигнем, като **пресметнем общата сума**, която е необходима, за да бъде покрит целия под, като **съберем цената на плочките с цената за майстора**, която имаме от входните данни. Можем да се досетим, че **общият разход** за плочките можем да получим, като **умножим броя плочки по цената за плочка**. Дали сумата, с която разполагаме, ще бъде достатъчна, разбираме като сравним събраните до момента пари (от входните данни) и общите разходи.
-### Тестване в Judge системата
+### Testing in the Judge System
Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/517#1](https://judge.softuni.bg/Contests/Practice/Index/517#1).
\ No newline at end of file
diff --git a/Content/Chapter-8-2-exam-preparation-part-2/christmas-hat/christmas-hat.md b/Content/Chapter-8-2-exam-preparation-part-2/christmas-hat/christmas-hat.md
index b4b600f3c..f7675a7d7 100644
--- a/Content/Chapter-8-2-exam-preparation-part-2/christmas-hat/christmas-hat.md
+++ b/Content/Chapter-8-2-exam-preparation-part-2/christmas-hat/christmas-hat.md
@@ -1,21 +1,21 @@
-## Задача: коледна шапка
+## Problem: коледна шапка
Да се напише програма, която прочита от конзолата **цяло число `n`** и чертае **коледна шапка** с ширина **4 \* `n` + 1 колони** и височина **2 \* `n` + 5 реда** като в примерите по-долу.
-### Входни данни
+### Input Data
Входът се чете от конзолата – едно **цяло число `n`** в интервала [**3 … 100**].
-### Изходни данни
+### Output Data
Да се отпечата на конзолата **коледна шапка**, точно както в примерите.
-### Примерен вход и изход
+### Sample Input and Output
-|Вход|Изход|
+| Input | Output |
|:-----:|:-----:|
|4|
......./|\\.......
.......\\|/.......
.......\*\*\*.......
......\*-\*-\*......
.....\*--\*--\*.....
....\*---\*---\*....
...\*----\*----\*...
..\*-----\*-----\*..
.\*------\*------\*.
\*-------\*-------\*
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*.\*.\*.\*.\*.\*.\*.\*.\*
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
|
-|Вход|Изход|
+| Input | Output |
|:-----:|:-----:|
|7|
............./|\\.............
.............\\|/.............
.............\*\*\*.............
............\*-\*-\*............
...........\*--\*--\*...........
..........\*---\*---\*..........
.........\*----\*----\*.........
........\*-----\*-----\*........
.......\*------\*------\*.......
......\*-------\*-------\*......
.....\*--------\*--------\*.....
....\*---------\*---------\*....
...\*----------\*----------\*...
..\*-----------\*-----------\*..
.\*------------\*------------\*.
\*-------------\*-------------\*
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*.\*.\*.\*.\*.\*.\*.\*.\*.\*.\*.\*.\*.\*.\*
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
|
\ No newline at end of file
diff --git a/Content/Chapter-8-2-exam-preparation-part-2/christmas-hat/guidelines-for-dynamic-part-of-the-figure.md b/Content/Chapter-8-2-exam-preparation-part-2/christmas-hat/guidelines-for-dynamic-part-of-the-figure.md
index a53cf2397..00c3db2db 100644
--- a/Content/Chapter-8-2-exam-preparation-part-2/christmas-hat/guidelines-for-dynamic-part-of-the-figure.md
+++ b/Content/Chapter-8-2-exam-preparation-part-2/christmas-hat/guidelines-for-dynamic-part-of-the-figure.md
@@ -17,6 +17,6 @@
В случай че сме работили правилно получаваме фигурки, идентични на тези от примерите.
-### Тестване в Judge системата
+### Testing in the Judge System
Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/517#4](https://judge.softuni.bg/Contests/Practice/Index/517#4).
\ No newline at end of file
diff --git a/Content/Chapter-8-2-exam-preparation-part-2/christmas-hat/problem-analytics.md b/Content/Chapter-8-2-exam-preparation-part-2/christmas-hat/problem-analytics.md
index ceda1e9f6..5ac6937fa 100644
--- a/Content/Chapter-8-2-exam-preparation-part-2/christmas-hat/problem-analytics.md
+++ b/Content/Chapter-8-2-exam-preparation-part-2/christmas-hat/problem-analytics.md
@@ -1,4 +1,4 @@
-#### Анализ на задачата
+#### Analysis of the Problem
При задачите за **чертане** с конзолата, най-често потребителят въвежда **едно цяло число**, което е свързано с **общата големина на фигурката**, която трябва да начертаем. Тъй като в условието е упоменато как се изчисляват общата дължина и широчина на фигурката, можем да ги използваме за **отправни точки**. От примерите ясно се вижда, че без значение какви са входните данни, винаги имаме **първи два реда**, които са с почти идентично съдържание.
diff --git a/Content/Chapter-8-2-exam-preparation-part-2/distance/calc-and-print-final-result.md b/Content/Chapter-8-2-exam-preparation-part-2/distance/calc-and-print-final-result.md
index 1cebc92b8..f9d1258d4 100644
--- a/Content/Chapter-8-2-exam-preparation-part-2/distance/calc-and-print-final-result.md
+++ b/Content/Chapter-8-2-exam-preparation-part-2/distance/calc-and-print-final-result.md
@@ -6,6 +6,6 @@
В случай че сте работили правилно и изпълните програмата с входните данни от условието на задачата, ще се уверите, че тя работи коректно.
-### Тестване в Judge системата
+### Testing in the Judge System
Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/517#0](https://judge.softuni.bg/Contests/Practice/Index/517#0).
\ No newline at end of file
diff --git a/Content/Chapter-8-2-exam-preparation-part-2/distance/distance.md b/Content/Chapter-8-2-exam-preparation-part-2/distance/distance.md
index e9f9b505d..e8799f7d5 100644
--- a/Content/Chapter-8-2-exam-preparation-part-2/distance/distance.md
+++ b/Content/Chapter-8-2-exam-preparation-part-2/distance/distance.md
@@ -1,8 +1,8 @@
-## Задача: разстояние
+## Problem: разстояние
Напишете програма, която да пресмята **колко километра изминава кола**, за която знаем **първоначалната скорост** \(км/ч\), **времето** в минути, след което **увеличава скоростта с 10%**, **второ време**, след което **намалява скоростта с 5%**, и **времето до края** на пътуването. За да намерите разстоянието трябва да **превърнете минутите в часове** \(например 70 минути = 1.1666 часа\).
-### Входни данни
+### Input Data
От конзолата се четат **4 реда**:
* **Първоначалната скорост в км/ч** – цяло число в интервала [**1 … 300**].
@@ -10,16 +10,16 @@
* **Второто време в минути** – цяло число в интервала [**1 … 1000**].
* **Третото време в минути** – цяло число в интервала [**1 … 1000**].
-### Изходни данни
+### Output Data
Да се отпечата на конзолата едно число: **изминатите километри**, форматирани до **втория символ след десетичния знак**.
-### Примерен вход и изход
+### Sample Input and Output
-|Вход|Изход|Обяснения|
+| Input | Output | Comments |
|-----|-----|-----|
|90
60
70
80|330.90|**Разстояние с първоначална скорост**: 90 км/ч \* 1 час (60 мин) = **90 км**
**След увеличението**: 90 + 10% = 99.00 км/ч \* 1.166 часа (70 мин) = **115.50 км**
**След намаляването**: 99 - 5% = 94.05 км/ч \* 1.33 часа (80 мин) = **125.40 км**
**Общо изминати**: **330.9 км**|
-|Вход|Изход|Обяснения|
+| Input | Output | Comments |
|-----|-----|-----|
|140
112
75
190|917.12|**Разстояние с първоначална скорост**: 140 км/ч \* 1.86 часa (112 мин) = **261.33 км**
**След увеличението**: 140 + 10% = 154.00 км/ч \* 1.25 часа (75 мин) = **192.5 км**
**След намаляването**: 154.00 - 5% = 146.29 км/ч \* 3.16 часа (190 мин) = **463.28 км**
**Общо изминати**: **917.1166 км**|
\ No newline at end of file
diff --git a/Content/Chapter-8-2-exam-preparation-part-2/distance/guidelines.md b/Content/Chapter-8-2-exam-preparation-part-2/distance/guidelines.md
index fa264a99c..61e7d9b80 100644
--- a/Content/Chapter-8-2-exam-preparation-part-2/distance/guidelines.md
+++ b/Content/Chapter-8-2-exam-preparation-part-2/distance/guidelines.md
@@ -1,4 +1,4 @@
-### Насоки и подсказки
+### Hints and Guidelines
Вероятно е подобно условие да изглежда на пръв поглед **объркващо** и непълно, което **придава** допълнителна **сложност** на една лесна задача. Нека **разделим** заданието на няколко **подзадачи** и да се опитаме да **решим** всяка една от тях, което ще ни отведе и до крайния резултат:
diff --git a/Content/Chapter-8-2-exam-preparation-part-2/distance/read-input-data.md b/Content/Chapter-8-2-exam-preparation-part-2/distance/read-input-data.md
index e0f9bb814..a4d54c183 100644
--- a/Content/Chapter-8-2-exam-preparation-part-2/distance/read-input-data.md
+++ b/Content/Chapter-8-2-exam-preparation-part-2/distance/read-input-data.md
@@ -1,4 +1,4 @@
-#### Прочитане на входните данни
+#### Reading the Input Data
За **прочитането** на данните от **конзолата** използваме следната **функция**:
diff --git a/Content/Chapter-8-2-exam-preparation-part-2/exam-problems/exam-problems.md b/Content/Chapter-8-2-exam-preparation-part-2/exam-problems/exam-problems.md
index d01ac0fc3..93575a29b 100644
--- a/Content/Chapter-8-2-exam-preparation-part-2/exam-problems/exam-problems.md
+++ b/Content/Chapter-8-2-exam-preparation-part-2/exam-problems/exam-problems.md
@@ -1,4 +1,4 @@
-## Изпитни задачи
+## Exam Problems
Традиционно приемният изпит в SoftUni се състои от **6 практически задачи по програмиране**:
- Задача с прости сметки (без проверки).
diff --git a/Content/Chapter-8-2-exam-preparation-part-2/flowers/flowers.md b/Content/Chapter-8-2-exam-preparation-part-2/flowers/flowers.md
index 1410c3663..316a4f272 100644
--- a/Content/Chapter-8-2-exam-preparation-part-2/flowers/flowers.md
+++ b/Content/Chapter-8-2-exam-preparation-part-2/flowers/flowers.md
@@ -1,4 +1,4 @@
-## Задача: магазин за цветя
+## Problem: магазин за цветя
Магазин за цветя предлага 3 вида цветя: **хризантеми**, **рози** и **лалета**. Цените зависят от сезона.
@@ -15,7 +15,7 @@
Цената за аранжиране на букета винаги е **2 лв.** Напишете програма, която изчислява **цената за един букет**.
-### Входни данни
+### Input Data
Входът се чете от **конзолата** и съдържа **точно 5 реда**:
* На първи ред е **броят на закупените хризантеми** – цяло число в интервала [**0 … 200**].
@@ -24,20 +24,20 @@
* На четвъртия ред е посочен **сезонът** – [**Spring, Summer, Autumn, Winter**].
* На петия ред е посочено **дали денят е празник** – [**Y - да / N - не**].
-### Изходни данни
+### Output Data
Да се отпечата на конзолата 1 число – **цената на цветята**, форматирана до втория символ след десетичния знак.
-### Примерен вход и изход
+### Sample Input and Output
-|Вход|Изход|Обяснения|
-|---|---|---|
+| Input | Output | Comments |
+| --- | --- | --- |
|2
4
8
Spring
Y
|46.14|**Цена**: 2\*2.00 + 4\*4.10 + 8\*2.50 = 40.40 лв.
**Празничен ден**: 40.40 + 15% = 46.46 лв.
**5% намаление** за повече от 7 лалета през пролетта: 44.14
Общо цветята са 20 или по-малко: **няма намаление**
44.14 + 2 **за аранжиране** = 46.14 лв.|
-|Вход|Изход|Обяснения|
-|---|---|---|
+| Input | Output | Comments |
+| --- | --- | --- |
|3
10
9
Winter
N
|69.39|**Цена**: 3\*3.75 + 10\*4.50 + 9\*4.15 = 93.60 лв.
**Не е празничен ден**: няма увеличение
**10% намаление** за 10 или повече рози през зимата: 84.24
Общо цветята са повече от 20: **20% намаление** = 67.392
67.392 + 2 **за аранжиране** = 69.392 лв.|
-|Вход|Изход|
-|---|---|
+| Input | Output |
+| --- | --- |
|10
10
10
Autumn
N|101.20|
\ No newline at end of file
diff --git a/Content/Chapter-8-2-exam-preparation-part-2/flowers/program-logic.md b/Content/Chapter-8-2-exam-preparation-part-2/flowers/program-logic.md
index a5dcaf983..6d67ee540 100644
--- a/Content/Chapter-8-2-exam-preparation-part-2/flowers/program-logic.md
+++ b/Content/Chapter-8-2-exam-preparation-part-2/flowers/program-logic.md
@@ -6,6 +6,6 @@
Остава ни да извършим **няколко проверки** относно **намаленията** на различните видове цветя, в зависимост от сезона, и да модифицираме крайния резултат.
-### Тестване в Judge системата
+### Testing in the Judge System
Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/517#2](https://judge.softuni.bg/Contests/Practice/Index/517#2).
\ No newline at end of file
diff --git a/Content/Chapter-8-2-exam-preparation-part-2/flowers/read-input-data.md b/Content/Chapter-8-2-exam-preparation-part-2/flowers/read-input-data.md
index 21456cf55..39803dcbe 100644
--- a/Content/Chapter-8-2-exam-preparation-part-2/flowers/read-input-data.md
+++ b/Content/Chapter-8-2-exam-preparation-part-2/flowers/read-input-data.md
@@ -1,4 +1,4 @@
-#### Прочитане на входните данни
+#### Reading the Input Data
Следващата ни подзадача е да **прочетем** правилно **входните** данни от конзолата. Подхождаме по добре познатия ни вече начин, но този път **комбинираме две** отделни функции – една за **прочитане** на ред от конзолата и друга за **преобразуването** му в числен тип данни:
diff --git a/Content/Chapter-8-2-exam-preparation-part-2/grades/allocationg-students-in-groups.md b/Content/Chapter-8-2-exam-preparation-part-2/grades/allocationg-students-in-groups.md
index 9258a9a6a..0a9320fe2 100644
--- a/Content/Chapter-8-2-exam-preparation-part-2/grades/allocationg-students-in-groups.md
+++ b/Content/Chapter-8-2-exam-preparation-part-2/grades/allocationg-students-in-groups.md
@@ -16,6 +16,6 @@
**Крайният** резултат оформяме по добре познатия ни начин **до втория символ** след десетичния знак.
-### Тестване в Judge системата
+### Testing in the Judge System
Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/517#3](https://judge.softuni.bg/Contests/Practice/Index/517#3).
\ No newline at end of file
diff --git a/Content/Chapter-8-2-exam-preparation-part-2/grades/grades.md b/Content/Chapter-8-2-exam-preparation-part-2/grades/grades.md
index 588a51a40..f4bb710b1 100644
--- a/Content/Chapter-8-2-exam-preparation-part-2/grades/grades.md
+++ b/Content/Chapter-8-2-exam-preparation-part-2/grades/grades.md
@@ -1,14 +1,14 @@
-## Задача: оценки
+## Problem: оценки
Напишете програма, която да **пресмята статистика на оценки** от изпит. В началото програмата получава **броя на студентите**, явили се на изпита и за **всеки студент неговата оценка**. На края програмата трябва да **изпечата процента на студенти** с оценка между 2.00 и 2.99, между 3.00 и 3.99, между 4.00 и 4.99, 5.00 или повече, както и **средният успех** на изпита.
-### Входни данни
+### Input Data
От конзолата се четат **поредица от числа, всяко на отделен ред**:
* На първия ред – **броят на студентите явили се на изпит** – цяло число в интервала [**1 … 1000**].
* За **всеки един студент** на отделен ред – **оценката от изпита** – реално число в интервала [**2.00 … 6.00**].
-### Изходни данни
+### Output Data
Да се отпечатат на конзолата **5 реда**, които съдържат следната информация:
* "Top students: {процент студенти с успех 5.00 или повече}%".
@@ -19,12 +19,12 @@
Резултатите трябва да са **форматирани до втория символ** след десетичния знак.
-### Примерен вход и изход
+### Sample Input and Output
-|Вход|Изход|Обяснения|
-|---|---|---|
+| Input | Output | Comments |
+| --- | --- | --- |
|10
3.00
2.99
5.68
3.01
4
4
6.00
4.50
2.44
5
|Top students: 30.00%
Between 4.00 and 4.99: 30.00%
Between 3.00 and 3.99: 20.00%
Fail: 20.00%
Average: 4.06|5 и повече - **трима** = 30% от 10
Между 4.00 и 4.99 - **трима** = 30% от 10
Между 3.00 и 3.99 - **двама** = 20% от 10
Под 3 - **двама** = 20% от 10
Средният успех е: 3 + 2.99 + 5.68 + 3.01 + 4 + 4 + 6 + 4.50 + 2.44 + 5 = 40.62 / 10 = 4.062|
-|Вход|Изход|
-|---|---|
+| Input | Output |
+| --- | --- |
|6
2
3
4
5
6
2.2|Top students: 33.33%
Between 4.00 and 4.99: 16.67%
Between 3.00 and 3.99: 16.67%
Fail: 33.33%
Average: 3.70|
\ No newline at end of file
diff --git a/Content/Chapter-8-2-exam-preparation-part-2/grades/read-input-data-and-create-helper-variables.md b/Content/Chapter-8-2-exam-preparation-part-2/grades/read-input-data-and-create-helper-variables.md
index c30239759..a70e4de09 100644
--- a/Content/Chapter-8-2-exam-preparation-part-2/grades/read-input-data-and-create-helper-variables.md
+++ b/Content/Chapter-8-2-exam-preparation-part-2/grades/read-input-data-and-create-helper-variables.md
@@ -1,4 +1,4 @@
-#### Прочитане на входните данни и създаване на помощни променливи
+#### Reading the Input Data и създаване на помощни променливи
От условието виждаме, че **първо** ще ни бъде подаден **броя** на студентите, а едва **след това оценките** им. По тази причина **първо** в една променлива от тип **`int`** ще прочетем **броя** на студентите. За да прочетем и обработим самите оценки, ще използваме **`for`** цикъл. Стойността на променливата **`int`** ще бъде **крайната** стойност на променливата **`i`** от цикъла. По този начин **всички** итерации на цикъла ще прочетат **всяка една оценка**.
diff --git a/Content/Chapter-8-2-exam-preparation-part-2/letters-combinations/letters-combinations.md b/Content/Chapter-8-2-exam-preparation-part-2/letters-combinations/letters-combinations.md
index ef5a29759..20375fd8d 100644
--- a/Content/Chapter-8-2-exam-preparation-part-2/letters-combinations/letters-combinations.md
+++ b/Content/Chapter-8-2-exam-preparation-part-2/letters-combinations/letters-combinations.md
@@ -1,28 +1,28 @@
-## Задача: комбинации от букви
+## Problem: комбинации от букви
Напишете програма, която да принтира на конзолата **всички комбинации от 3 букви** в зададен интервал, като се пропускат комбинациите, **съдържащи зададена от конзолата буква**. Накрая трябва да се принтира броят отпечатани комбинации.
-### Входни данни
+### Input Data
Входът се чете от **конзолата** и съдържа **точно 3 реда**:
* Малка буква от английската азбука за начало на интервала – от **'a'** до **'z'**.
* Малка буква от английската азбука за край на интервала – от **първата буква** до **'z'**.
* Малка буква от английската азбука – от **'a'** до **'z'** – като комбинациите, съдържащи тази буква се пропускат.
-### Изходни данни
+### Output Data
Да се отпечатат на един ред **всички комбинации**, отговарящи на условието, следвани от **броя им**, разделени с интервал.
-### Примерен вход и изход
+### Sample Input and Output
-|Вход|Изход|Обяснения|
-|---|---|---|
+| Input | Output | Comments |
+| --- | --- | --- |
|a
c
b|aaa aac aca acc caa cac cca ccc 8|Всички възможни комбинации с буквите '**а**', '**b**' и '**c**' са:
aaa aab aac aba abb abc aca acb acc baa bab bac bba bbb bbc bca bcb bcc caa cab cac cba cbb cbc cca ccb ccc
Комбинациите, **съдържащи 'b', не са валидни**.
Остават **8** валидни комбинации.|
-|Вход|Изход|
-|---|---|
+| Input | Output |
+| --- | --- |
|f
k
h|fff ffg ffi ffj ffk fgf fgg fgi fgj fgk fif fig fii fij fik fjf fjg fji fjj fjk fkf fkg fki fkj fkk gff gfg gfi gfj gfk ggf ggg ggi ggj ggk gif gig gii gij gik gjf gjg gji gjj gjk gkf gkg gki gkj gkk iff ifg ifi ifj ifk igf igg igi igj igk iif iig iii iij iik ijf ijg iji ijj ijk ikf ikg iki ikj ikk jff jfg jfi jfj jfk jgf jgg jgi jgj jgk jif jig jii jij jik jjf jjg jji jjj jjk jkf jkg jki jkj jkk kff kfg kfi kfj kfk kgf kgg kgi kgj kgk kif kig kii kij kik kjf kjg kji kjj kjk kkf kkg kki kkj kkk 125|
-|Вход|Изход|
-|---|---|
+| Input | Output |
+| --- | --- |
|a
c
z|aaa aab aac aba abb abc aca acb acc baa bab bac bba bbb bbc bca bcb bcc caa cab cac cba cbb cbc cca ccb ccc 27|
diff --git a/Content/Chapter-8-2-exam-preparation-part-2/letters-combinations/printing-3-symbols.md b/Content/Chapter-8-2-exam-preparation-part-2/letters-combinations/printing-3-symbols.md
index e2e17de45..255e5982b 100644
--- a/Content/Chapter-8-2-exam-preparation-part-2/letters-combinations/printing-3-symbols.md
+++ b/Content/Chapter-8-2-exam-preparation-part-2/letters-combinations/printing-3-symbols.md
@@ -6,6 +6,6 @@
Нека не забравяме, че се изисква от нас да принтираме и **общия брой валидни комбинации**, които сме намерили, както и че те трябва да се принтират на **същия ред**, разделени с интервал.
-### Тестване в Judge системата
+### Testing in the Judge System
Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/517#5](https://judge.softuni.bg/Contests/Practice/Index/517#5).
diff --git a/Content/Chapter-8-2-exam-preparation-part-2/letters-combinations/read-input-data.md b/Content/Chapter-8-2-exam-preparation-part-2/letters-combinations/read-input-data.md
index fa983ced0..42453dc0f 100644
--- a/Content/Chapter-8-2-exam-preparation-part-2/letters-combinations/read-input-data.md
+++ b/Content/Chapter-8-2-exam-preparation-part-2/letters-combinations/read-input-data.md
@@ -1,4 +1,4 @@
-#### Прочитане на входните данни
+#### Reading the Input Data
За последната задача имаме по условие входни данни на **3 реда**, които са представени от по един символ от **ASCII таблицата** ([http://www.asciitable.com/](http://www.asciitable.com/)). Бихме могли да използваме вече **дефинирана функция** в езика C#, като преобразуваме входните данни в тип данни **`char`** по следния начин:
diff --git a/Content/Chapter-8-2-exam-preparation-part-2/overview.md b/Content/Chapter-8-2-exam-preparation-part-2/overview.md
index 505786bfc..3c8942e2a 100644
--- a/Content/Chapter-8-2-exam-preparation-part-2/overview.md
+++ b/Content/Chapter-8-2-exam-preparation-part-2/overview.md
@@ -1,3 +1,3 @@
-# Глава 8.2. Подготовка за практически изпит – част II
+# Chapter 8.2. Подготовка за практически изпит – част II
В настоящата глава ще разгледаме един **практически изпит по основи на програмирането**, проведен в SoftUni на 18 декември 2016 г. Задачите дават добра представа какво можем да очакваме на приемния изпит по програмиране в SoftUni. Изпитът покрива изучавания учебен материал от настоящата книга и от курса "Programming Basics" в SoftUni.
\ No newline at end of file
diff --git a/Content/Chapter-9-1-problems-for-champions/crossing-sequences/alternative-solution.md b/Content/Chapter-9-1-problems-for-champions/crossing-sequences/alternative-solution.md
index a4abb2882..633365824 100644
--- a/Content/Chapter-9-1-problems-for-champions/crossing-sequences/alternative-solution.md
+++ b/Content/Chapter-9-1-problems-for-champions/crossing-sequences/alternative-solution.md
@@ -1,9 +1,9 @@
-#### Алтернативно решение
+#### Alternative Solution
Предходното решение на задачата използва масиви за запазване на стойностите. Масивите не са необходими за решаването на задачата. Съществува **алтернативно решение**, което генерира числата и работи директно с тях, вместо да ги записва в масив. Можем на **всяка стъпка** да проверяваме дали **числата от двете редици съвпадат**. Ако това е така, ще принтираме на конзолата числото и ще прекратим изпълнението на нашата програма. В противен случай, ще видим текущото число на **коя редица е по-малко и ще генерираме следващото, там където "изоставаме"**. Идеята е, че **ще генерираме числа от редицата, която е "по-назад"**, докато не прескочим текущото число на другата редица и след това обратното, а ако междувременно намерим съвпадение, ще прекратим изпълнението.
![](/assets/chapter-9-images/01.Crossing-sequences-07.png)
-### Тестване в Judge системата
+### Testing in the Judge System
Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/518#0](https://judge.softuni.bg/Contests/Practice/Index/518#0).
\ No newline at end of file
diff --git a/Content/Chapter-9-1-problems-for-champions/crossing-sequences/crossing-sequences.md b/Content/Chapter-9-1-problems-for-champions/crossing-sequences/crossing-sequences.md
index 59916c0cb..688bfbf70 100644
--- a/Content/Chapter-9-1-problems-for-champions/crossing-sequences/crossing-sequences.md
+++ b/Content/Chapter-9-1-problems-for-champions/crossing-sequences/crossing-sequences.md
@@ -1,4 +1,4 @@
-## Задача: пресичащи се редици
+## Problem: пресичащи се редици
Имаме две редици:
- **редица на Трибоначи** (по аналогия с редицата на Фибоначи), където всяко число е **сумата от предните три** (при дадени начални три числа)
@@ -6,7 +6,7 @@
Да се напише програма, която намира първото число, което се появява **и в двете така дефинирани редици**.
-### Входни данни
+### Input Data
Входните данни трябва да бъдат прочетени от конзолата.
* На първите три реда от входа ще се подават **три цели числа**, представляващи **първите три числа** в редицата на Трибоначи, положителни ненулеви числа, сортирани в нарастващ ред.
@@ -14,25 +14,25 @@
Входните данни винаги ще бъдат валидни и винаги ще са в описания формат. Няма нужда да се проверяват.
-### Изходни данни
+### Output Data
Резултатът трябва да бъде принтиран на конзолата.
На единствения ред от изхода трябва да принтирате **най-малкото число, което се среща и в двете последователности**. Ако няма число в **диапазона** [**1 … 1 000 000**], което да се среща и в двете последователности, принтирайте "**No**".
-### Ограничения
+### Constraints
* Всички числа във входа ще бъдат в диапазона [**1 … 1 000 000**].
* Позволено работно време за програмата: 0.3 секунди.
* Позволена памет: 16 MB.
-### Примерен вход и изход
+### Sample Input and Output
-| Вход | Изход | Вход | Изход | Вход | Изход |
+| Input | Output | Input | Output | Input | Output |
| ------ | -------- | ------ | ------------ | ------ | -------- |
|1
2
3
5
2
|37|13
25
99
5
2|13|99
99
99
2
2|No|
-| Вход | Изход | Вход | Изход |
+| Input | Output | Input | Output |
| ------ | ------- | ------ | ------------ |
|1
1
1
1
1|1|1
4
7
23
3|23|
diff --git a/Content/Chapter-9-1-problems-for-champions/crossing-sequences/example.md b/Content/Chapter-9-1-problems-for-champions/crossing-sequences/example.md
index d33123a59..536ca807f 100644
--- a/Content/Chapter-9-1-problems-for-champions/crossing-sequences/example.md
+++ b/Content/Chapter-9-1-problems-for-champions/crossing-sequences/example.md
@@ -1,4 +1,4 @@
-### Пример
+### Example
Нека **редицата на Трибоначи** да започне с **1**, **2** и **3**. Това означава, че **първата редица** ще съдържа числата 1, 2, 3, 6, 11, 20, 37, 68, 125, 230, 423, 778, 1431, 2632, 4841, 8904, 16377, 30122, 55403, 101902 и т.н.
diff --git a/Content/Chapter-9-1-problems-for-champions/crossing-sequences/guidelines-and-process-input.md b/Content/Chapter-9-1-problems-for-champions/crossing-sequences/guidelines-and-process-input.md
index 1ffcac4b1..d02a5653a 100644
--- a/Content/Chapter-9-1-problems-for-champions/crossing-sequences/guidelines-and-process-input.md
+++ b/Content/Chapter-9-1-problems-for-champions/crossing-sequences/guidelines-and-process-input.md
@@ -1,8 +1,8 @@
-### Насоки и подсказки
+### Hints and Guidelines
Задачата изглежда доста сложна и затова ще я разбием на по-прости подзадачи.
-#### Обработване на входа
+#### Processing the Input
Първата стъпка от решаването на задачата е да прочетем и обработим входа. Входните данни се състоят от **5 цели числа**: **3** за редицата на Трибоначи и **2** за числовата спирала.
diff --git a/Content/Chapter-9-1-problems-for-champions/five-special-letters/five-special-letters.md b/Content/Chapter-9-1-problems-for-champions/five-special-letters/five-special-letters.md
index 726da74d7..98f92d120 100644
--- a/Content/Chapter-9-1-problems-for-champions/five-special-letters/five-special-letters.md
+++ b/Content/Chapter-9-1-problems-for-champions/five-special-letters/five-special-letters.md
@@ -1,4 +1,4 @@
-## Задача: пет специални букви
+## Problem: пет специални букви
Дадени са две числа: **начало** и **край**. Напишете програма, която **генерира всички комбинации от 5 букви**, всяка измежду множеството **`{'a', 'b', 'c', 'd', 'e'}`**, така че теглото на тези 5 букви да е число в интервала **`[начало … край]`**, включително. Принтирайте ги по азбучен ред, на един ред, разделени с интервал.
@@ -24,7 +24,7 @@ weight(c1c2…cn) = 1 * weight(c1) + 2 * weight(c2) + … + n * weight(cn)
**Друг пример**: **`weight("cadae") = weight("cade") = 1 * 47 + 2 * 5 + 3 * 7 + 4 * (-32) = -50`**.
-### Входни данни
+### Input Data
Входните данни се четат от конзолата. Състоят се от две числа:
* Числото за **начало**.
@@ -32,30 +32,30 @@ weight(c1c2…cn) = 1 * weight(c1) + 2 * weight(c2) + … + n * weight(cn)
Входните данни винаги ще бъдат валидни и винаги ще са в описания формат. Няма нужда да се проверяват.
-### Изходни данни
+### Output Data
Резултатът трябва да бъде принтиран на конзолата като поредица от низове, **подредени по азбучен ред**. Всеки низ трябва да бъде отделен от следващия с едно разстояние. Ако теглото на нито един от 5 буквените низове не съществува в зададения интервал, принтирайте "**No**".
-### Ограничения
+### Constraints
* Числата за **начало** и **край** да бъдат цели числа в диапазона [**-10000 … 10000**].
* Позволено работно време за програмата: 0.25 секунди.
* Позволена памет: 16 MB.
-### Примерен вход и изход
+### Sample Input and Output
-| Вход | Изход | Коментар |
+| Input | Output | Comments |
| ------ | ------------- | ---------------------- |
|40
42|bcead bdcea |weight("bcead") = 41
weight("bdcea") = 40|
-| Вход | Изход |
+| Input | Output |
| ------ |---------------|
|-1
1| bcdea cebda eaaad eaada eaadd eaade eaaed eadaa eadad eadae eadda eaddd eadde eadea eaded eadee eaead eaeda eaedd eaede eaeed eeaad eeada eeadd eeade eeaed eeead|
-| Вход | Изход |
+| Input | Output |
| ------ |------------|
|200
300|baadc babdc badac badbc badca badcb badcc badcd baddc bbadc bbdac bdaac bdabc bdaca bdacb bdacc bdacd bdadc bdbac bddac beadc bedac eabdc ebadc ebdac edbac|
-| Вход | Изход |
+| Input | Output |
| ------ | -------- |
|300
400| No|
\ No newline at end of file
diff --git a/Content/Chapter-9-1-problems-for-champions/five-special-letters/print-output.md b/Content/Chapter-9-1-problems-for-champions/five-special-letters/print-output.md
index 6f49332f8..6bc110c34 100644
--- a/Content/Chapter-9-1-problems-for-champions/five-special-letters/print-output.md
+++ b/Content/Chapter-9-1-problems-for-champions/five-special-letters/print-output.md
@@ -4,6 +4,6 @@
![](/assets/chapter-9-images/03.Five-special-letters-10.png)
-### Тестване в Judge системата
+### Testing in the Judge System
Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/518#2](https://judge.softuni.bg/Contests/Practice/Index/518#2).
diff --git a/Content/Chapter-9-1-problems-for-champions/five-special-letters/read-input-data.md b/Content/Chapter-9-1-problems-for-champions/five-special-letters/read-input-data.md
index 51fc87d50..585d64b38 100644
--- a/Content/Chapter-9-1-problems-for-champions/five-special-letters/read-input-data.md
+++ b/Content/Chapter-9-1-problems-for-champions/five-special-letters/read-input-data.md
@@ -1,4 +1,4 @@
-#### Прочитане на входните данни
+#### Reading the Input Data
Като всяка задача, започваме решението с **прочитане и обработване на входните данни**. В случая имаме **две цели числа**, които можем да обработим с комбинация от методите **`int.Parse(…)`** и **`Console.ReadLine()`**.
diff --git a/Content/Chapter-9-1-problems-for-champions/magic-dates/calc-date-weight.md b/Content/Chapter-9-1-problems-for-champions/magic-dates/calc-date-weight.md
index 79222eef5..7e8c5d4e8 100644
--- a/Content/Chapter-9-1-problems-for-champions/magic-dates/calc-date-weight.md
+++ b/Content/Chapter-9-1-problems-for-champions/magic-dates/calc-date-weight.md
@@ -4,7 +4,7 @@
![](/assets/chapter-9-images/02.Magic-dates-04.png)
-Нека обясним и един от по-интересните редове тук. Нека вземе за пример взимането на втората цифра от годината (**`d6`**). При нея делим годината на 100 и взимаме остатък от 10. Какво постигаме така? Първо с деленето на 100 отстраняваме последните 2 цифри от годината (пример: **`2018 / 100 = 20`**). С остатъка от деление на 10 взимаме последната цифра на полученото число (**`20 % 10 = 0`**) и така получаваме 0, което е втората цифра на 2018.
+Нека обясним и един от по-интересните редове тук. Нека вземе за пример взимането на втората цифра от годината (**`d6`**). При нея делим годината на 100 и взимаме остатък от 10. Какво постигаме така? Първо с деленето на 100 отстраняваме последните 2 цифри от годината (Example: **`2018 / 100 = 20`**). С остатъка от деление на 10 взимаме последната цифра на полученото число (**`20 % 10 = 0`**) и така получаваме 0, което е втората цифра на 2018.
Остава да направим изчислението, което ще ни даде магическото тегло на дадена дата. За да **не изписваме всички умножения**, както е показано в примера, ще приложим просто групиране. Това, което трябва да направим, е да умножим всяка цифра с тези, които са след нея. Вместо да изписваме **`d1 * d2 + d1 * d3 + … + d1 * d8`**, може да съкратим този израз до **`d1 * (d2 + d3 + … + d8)`**, следвайки математическите правила за групиране, когато имаме умножение и събиране. Прилагайки същото опростяване за останалите умножения, получаваме следната формула:
diff --git a/Content/Chapter-9-1-problems-for-champions/magic-dates/guidelines.md b/Content/Chapter-9-1-problems-for-champions/magic-dates/guidelines.md
index 46db8b632..dbabbd39d 100644
--- a/Content/Chapter-9-1-problems-for-champions/magic-dates/guidelines.md
+++ b/Content/Chapter-9-1-problems-for-champions/magic-dates/guidelines.md
@@ -1,4 +1,4 @@
-### Насоки и подсказки
+### Hints and Guidelines
Започваме от входните данни. В случая имаме **3 цели числа**, които трябва да се прочетат от конзолата, като с това се изчерпва въвеждането и обработването на входа за задачата.
diff --git a/Content/Chapter-9-1-problems-for-champions/magic-dates/loop-through-dates.md b/Content/Chapter-9-1-problems-for-champions/magic-dates/loop-through-dates.md
index 7db96d1cf..0bdcae251 100644
--- a/Content/Chapter-9-1-problems-for-champions/magic-dates/loop-through-dates.md
+++ b/Content/Chapter-9-1-problems-for-champions/magic-dates/loop-through-dates.md
@@ -16,4 +16,4 @@
![](/assets/chapter-9-images/02.Magic-dates-03.png)
-***Забележка***: може да постигнем същия резултат с **`for` цикъл**, инициализацията на датата отива в първата част на **`for`**, условието се запазва, а стъпката е увеличаването с 1 ден.
\ No newline at end of file
+***Note***: може да постигнем същия резултат с **`for` цикъл**, инициализацията на датата отива в първата част на **`for`**, условието се запазва, а стъпката е увеличаването с 1 ден.
\ No newline at end of file
diff --git a/Content/Chapter-9-1-problems-for-champions/magic-dates/magic-dates.md b/Content/Chapter-9-1-problems-for-champions/magic-dates/magic-dates.md
index 8ce5a4f5d..473332cd9 100644
--- a/Content/Chapter-9-1-problems-for-champions/magic-dates/magic-dates.md
+++ b/Content/Chapter-9-1-problems-for-champions/magic-dates/magic-dates.md
@@ -1,10 +1,10 @@
-## Задача: магически дати
+## Problem: магически дати
Дадена е **дата** във формат "**дд-мм-гггг**", напр. 17-04-2018. Изчисляваме **теглото на тази дата**, като вземем всичките ѝ цифри, умножим всяка цифра с останалите след нея и накрая съберем всички получени резултати. В нашия случай имаме 8 цифри: **17032007**, така че теглото е **`1*7 + 1*0 + 1*3 + 1*2 + 1*0 + 1*0 + 1*7`** **+** **`7*0 + 7*3 + 7*2 + 7*0 + 7*0 + 7*7`** **+** **`0*3 + 0*2 + 0*0 + 0*0 + 0*7`** **+** **`3*2 + 3*0 + 3*0 + 3*7`** **+** **`2*0 + 2*0 + 2*7`** **+** **`0*0 + 0*7`** **+** **`0*7`** = **144**.
Нашата задача е да напишем програма, която намира всички **магически дати - дати между две определени години (включително), отговарящи на дадено във входните данни тегло**. Датите трябва да бъдат принтирани в нарастващ ред (по дата) във формат "**дд-мм-гггг**". Ще използваме само валидните дати в традиционния календар (високосните години имат 29 дни през февруари).
-### Входни данни
+### Input Data
Входните данни трябва да бъдат прочетени от конзолата. Състоят се от 3 реда:
@@ -14,23 +14,23 @@
Входните данни винаги ще бъдат валидни и винаги ще са в описания формат. Няма нужда да се проверяват.
-### Изходни данни
+### Output Data
Резултатът трябва да бъде принтиран на конзолата, като последователни дати във **формат "дд-мм-гггг"**, подредени по дата в нарастващ ред. Всеки низ трябва да е на отделен ред. В случай, че няма съществуващи магически дати, да се принтира "**No**".
-### Ограничения
+### Constraints
* Началната и крайната година са цели числа в периода [**1900 - 2100**].
* Магическото тегло е цяло число в диапазона [**1 … 1000**].
* Позволено работно време за програмата: 0.25 секунди.
* Позволена памет: 16 MB.
-### Примерен вход и изход
+### Sample Input and Output
-| Вход | Изход | Вход | Изход |
+| Input | Output | Input | Output |
|------|------------|------|------------|
|2007
2007
144|17-03-2007
13-07-2007
31-07-2007|2003
2004
1500
|No|
-| Вход | Изход | Вход | Изход |
+| Input | Output | Input | Output |
|------|------------|------|------------|
|2012
2014
80|09-01-2013
17-01-2013
23-03-2013
11-07-2013
01-09-2013
10-09-2013
09-10-2013
17-10-2013
07-11-2013
24-11-2013
14-12-2013
23-11-2014
13-12-2014
31-12-2014|2011
2012
14
|01-01-2011
10-01-2011
01-10-2011
10-10-2011|
\ No newline at end of file
diff --git a/Content/Chapter-9-1-problems-for-champions/magic-dates/print-results.md b/Content/Chapter-9-1-problems-for-champions/magic-dates/print-results.md
index 018cef2b5..c6037696f 100644
--- a/Content/Chapter-9-1-problems-for-champions/magic-dates/print-results.md
+++ b/Content/Chapter-9-1-problems-for-champions/magic-dates/print-results.md
@@ -1,4 +1,4 @@
-### Отпечатване на изхода
+### Printing the Output
След като имаме пресметнато теглото на дадена дата, трябва **да проверим дали съвпада с търсеното от нас магическо тегло**, за да знаем, дали трябва да се принтира или не. Проверката може да се направи със стандартен **`if`** блок, като трябва да се внимава при принтирането датата да е в правилния формат.
@@ -20,6 +20,6 @@
![](/assets/chapter-9-images/02.Magic-dates-09.png)
-### Тестване в Judge системата
+### Testing in the Judge System
Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/518#1](https://judge.softuni.bg/Contests/Practice/Index/518#1).
\ No newline at end of file
diff --git a/Content/Chapter-9-1-problems-for-champions/overview.md b/Content/Chapter-9-1-problems-for-champions/overview.md
index ac47331f4..22a52a1c3 100644
--- a/Content/Chapter-9-1-problems-for-champions/overview.md
+++ b/Content/Chapter-9-1-problems-for-champions/overview.md
@@ -1,3 +1,3 @@
-# Глава 9.1. Задачи за шампиони – част I
+# Chapter 9.1. Задачи за шампиони – част I
В настоящата глава ще предложим на читателя няколко малко **по-трудни задачи**, които имат за цел развиване на **алгоритмични умения** и усвояване на **програмни техники** за решаване на задачи с по-висока сложност.
\ No newline at end of file
diff --git a/Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/bulls-and-cows.md b/Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/bulls-and-cows.md
index cbdd221b3..1986792c0 100644
--- a/Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/bulls-and-cows.md
+++ b/Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/bulls-and-cows.md
@@ -1,4 +1,4 @@
-## Задача: бикове и крави
+## Problem: бикове и крави
Всички знаем играта „Бикове и крави“ ([http://en.wikipedia.org/wiki/Bulls_and_cows](http://en.wikipedia.org/wiki/Bulls_and_cows)). При дадено 4-цифрено **тайно число** и 4-цифрено **предполагаемо число**, използваме следните правила:
* Ако имаме цифра от предполагаемото число, която съвпада с цифра от тайното число и е на **същата позиция**, имаме ***бик***.
@@ -16,7 +16,7 @@
Ако **не съществуват предполагаеми числа**, които да отговарят на зададените критерии на конзолата, трябва да се отпечата "**No**".
-### Входни данни
+### Input Data
Входните данни се четат от конзолата. Входът се състои от 3 реда:
* Първият ред съдържа **секретното число**.
@@ -25,29 +25,29 @@
Входните данни ще бъдат винаги валидни. Няма нужда да бъдат проверявани.
-### Изходни данни
+### Output Data
Изходните данни трябва да се принтират на конзолата.
Изходът трябва да се състои от **един единствен ред** – **всички предполагаеми числа**, разделени с единично празно място.
Ако **не съществуват предполагаеми числа**, които да отговарят на зададените критерии на конзолата, трябва **да се изпише “No”**.
-### Ограничения
+### Constraints
- Тайното число винаги ще се състои от **4 цифри в интервала** [**1..9**].
- Броят на **кравите и биковете** винаги ще е в интервала [**0..9**].
- Позволено време за изпълнение: **0.15 секунди**.
- Позволена памет: **16 MB**.
-### Примерен вход и изход
+### Sample Input and Output
-| Вход | Изход |
+| Input | Output |
|--------------|------------|
| 2228
2
1 | 1222 2122 2212 2232 2242 2252 2262 2272 2281 2283 2284 2285 2286 2287 2289 2292 2322 2422 2522 2622 2722 2821 2823 2824 2825 2826 2827 2829 2922 3222 4222 5222 6222 7222 8221 8223 8224 8225 8226 8227 8229 9222 |
-| Вход | Изход |
+| Input | Output |
|--------------|------------|
| 1234
3
0 | 1134 1214 1224 1231 1232 1233 1235 1236 1237 1238 1239 1244 1254 1264 1274 1284 1294 1334 1434 1534 1634 1734 1834 1934 2234 3234 4234 5234 6234 7234 8234 9234 |
-| Вход | Изход |
+| Input | Output |
|--------------|------------|
| 1234
3
1 | No |
\ No newline at end of file
diff --git a/Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/guidelines.md b/Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/guidelines.md
index 0f1cfdfbd..854c7a26a 100644
--- a/Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/guidelines.md
+++ b/Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/guidelines.md
@@ -1,4 +1,4 @@
-### Насоки и подсказки
+### Hints and Guidelines
Ще решим задачата на няколко стъпки:
- Ще прочетем **входните данни**.
diff --git a/Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/print-output.md b/Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/print-output.md
index 891a2b0ec..e78b43e70 100644
--- a/Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/print-output.md
+++ b/Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/print-output.md
@@ -1,9 +1,9 @@
-#### Отпечатване на изхода
+#### Printing the Output
След като приключим всички проверки, ни остава единствено да **проверим дали биковете и кравите в текущото генерирано число съвпадат с желаните бикове и крави, прочетени от конзолата**. Ако това е така, принтираме текущото число на конзолата.
![](/assets/chapter-9-2-images/03.Bulls-and-cows-11.png)
-### Тестване в Judge системата
+### Testing in the Judge System
Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/519#2](https://judge.softuni.bg/Contests/Practice/Index/519#2).
diff --git a/Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/read-input-data.md b/Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/read-input-data.md
index 05b723476..1e8334381 100644
--- a/Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/read-input-data.md
+++ b/Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/read-input-data.md
@@ -1,4 +1,4 @@
-#### Прочитане на входните данни
+#### Reading the Input Data
За входа на нашата задача имаме 3 реда:
* **Секретното число**.
diff --git a/Content/Chapter-9-2-problems-for-champions-part-2/expression/example.md b/Content/Chapter-9-2-problems-for-champions-part-2/expression/example.md
index 8ed15497e..59db5de86 100644
--- a/Content/Chapter-9-2-problems-for-champions-part-2/expression/example.md
+++ b/Content/Chapter-9-2-problems-for-champions-part-2/expression/example.md
@@ -1,4 +1,4 @@
-### Пример
+### Example
Изразът
diff --git a/Content/Chapter-9-2-problems-for-champions-part-2/expression/expression.md b/Content/Chapter-9-2-problems-for-champions-part-2/expression/expression.md
index 888ed8027..3347a10de 100644
--- a/Content/Chapter-9-2-problems-for-champions-part-2/expression/expression.md
+++ b/Content/Chapter-9-2-problems-for-champions-part-2/expression/expression.md
@@ -1,4 +1,4 @@
-## Задача: числен израз
+## Problem: числен израз
Бони е изключително могъща вещица. Тъй като силата на природата не е достатъчна, за да се бори успешно с вампири и върколаци, тя започнала да усвоява силата на Изразите. Изразът е много труден за усвояване, тъй като заклинанието разчита на способността за **бързо решаване на математически изрази**.
@@ -8,19 +8,19 @@
- Израз съдържащ **(…(…)…) е невалиден**.
- Израз съдържащ **(…)…(…) е валиден**.
-### Входни данни
+### Input Data
Входните данни се състоят от един ред, който бива подаван от конзолата. Той съдържа **математическият израз за пресмятане**. Редът **винаги завършва със символа "="**. Символът **"="** означава **край на математическия израз**.
Входните данни винаги са валидни и във формата, който е описан. Няма нужда да бъдат валидирани.
-### Изходни данни
+### Output Data
Изходните данни трябва да се принтират на конзолата. Изходът се състои от един ред – резултата от **пресметнатия математически израз**.
Резултатът трябва да бъде **закръглен до втората цифра след десетичния знак**.
-### Ограничения
+### Constraints
- Изразите ще състоят от **максимум 2500 символа**.
- Числата от всеки математически израз ще са в интервала [**1 … 9**].
@@ -29,8 +29,8 @@
- Позволено време за изпълнение: **0.1 секунди**.
- Позволена памет: **16 MB**.
-### Примерен вход и изход
+### Sample Input and Output
-| Вход | Изход |Вход | Изход |
+| Input | Output | Input | Output |
|--------------------------------|--------|-------------------------------|--------|
| 4+6/5+(4\*9–8)/7\*2= | 8.57 |3+(6/5)+(2\*3/7)\*7/2\*(9/4+4\*1)= | 110.63 |
\ No newline at end of file
diff --git a/Content/Chapter-9-2-problems-for-champions-part-2/expression/format-output.md b/Content/Chapter-9-2-problems-for-champions-part-2/expression/format-output.md
index 4113cccdc..e19f20f59 100644
--- a/Content/Chapter-9-2-problems-for-champions-part-2/expression/format-output.md
+++ b/Content/Chapter-9-2-problems-for-champions-part-2/expression/format-output.md
@@ -1,7 +1,7 @@
-#### Форматиране на изхода
+#### Formatting the Output
Единствения изход, който програмата трябва да принтира на конзолата, е **резултатът от решаването на израза, с точност два символа след десетичния знак**. Как можем да форматираме изхода по този начин? Отговора на този въпрос оставяме на читателя.
-### Тестване в Judge системата
+### Testing in the Judge System
Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/519#1](https://judge.softuni.bg/Contests/Practice/Index/519#1).
\ No newline at end of file
diff --git a/Content/Chapter-9-2-problems-for-champions-part-2/expression/guidelines-and-process-input.md b/Content/Chapter-9-2-problems-for-champions-part-2/expression/guidelines-and-process-input.md
index 433774383..96af95e29 100644
--- a/Content/Chapter-9-2-problems-for-champions-part-2/expression/guidelines-and-process-input.md
+++ b/Content/Chapter-9-2-problems-for-champions-part-2/expression/guidelines-and-process-input.md
@@ -1,8 +1,8 @@
-### Насоки и подсказки
+### Hints and Guidelines
Както обикновено, първо ще прочетем и обработим входа, след това ще решим задачата и накрая ще отпечатаме резултата, форматиран, както се изисква.
-#### Прочитане на входните данни
+#### Reading the Input Data
Входните данни се състоят от точно един ред от конзолата. Тук имаме **два начина**, по които можем да обработим входа. Първият е чрез **прочитането на целия ред с командата `Console.ReadLine()`** и достъпването на всеки един символ (**`char`**) от реда чрез **`foreach` цикъл**. Вторият е чрез **прочитане на входа символ по символ чрез командата `Console.Read()`** и обработване на всеки символ.
diff --git a/Content/Chapter-9-2-problems-for-champions-part-2/expression/implementing-the-structure.md b/Content/Chapter-9-2-problems-for-champions-part-2/expression/implementing-the-structure.md
index 535d900ed..d8a49769f 100644
--- a/Content/Chapter-9-2-problems-for-champions-part-2/expression/implementing-the-structure.md
+++ b/Content/Chapter-9-2-problems-for-champions-part-2/expression/implementing-the-structure.md
@@ -1,4 +1,4 @@
-#### Реализация на описаната идея
+#### Implementing the Proposed Idea
Нека разгледаме действията, които трябва да извършим при съответните случаи, които дефинирахме:
* Ако нашият символ е **оператор**, то тогава единственото, което трябва да направим, е да **зададем нова стойност на променливата `expressionOperator`**.
diff --git a/Content/Chapter-9-2-problems-for-champions-part-2/overview.md b/Content/Chapter-9-2-problems-for-champions-part-2/overview.md
index 3739bcd69..a68168175 100644
--- a/Content/Chapter-9-2-problems-for-champions-part-2/overview.md
+++ b/Content/Chapter-9-2-problems-for-champions-part-2/overview.md
@@ -1,3 +1,3 @@
-# Глава 9.2. Задачи за шампиони – част II
+# Chapter 9.2. Задачи за шампиони – част II
В тази глава ще разгледаме още три задачи, които причисляваме към категорията "**за шампиони**", т.е. по-трудни от стандартните задачи в тази книга.
diff --git a/Content/Chapter-9-2-problems-for-champions-part-2/passion-days/format-output.md b/Content/Chapter-9-2-problems-for-champions-part-2/passion-days/format-output.md
index 68e5516e7..f788b38a4 100644
--- a/Content/Chapter-9-2-problems-for-champions-part-2/passion-days/format-output.md
+++ b/Content/Chapter-9-2-problems-for-champions-part-2/passion-days/format-output.md
@@ -1,4 +1,4 @@
-#### Форматиране на изхода
+#### Formatting the Output
В края на задачата трябва да **принтираме** определен **изход**, в зависимост от следното условие:
@@ -9,6 +9,6 @@
Как можем да направим това? Ще оставим отговора на този въпрос на читателя.
-### Тестване в Judge системата
+### Testing in the Judge System
Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/519#0](https://judge.softuni.bg/Contests/Practice/Index/519#0).
\ No newline at end of file
diff --git a/Content/Chapter-9-2-problems-for-champions-part-2/passion-days/guidelines.md b/Content/Chapter-9-2-problems-for-champions-part-2/passion-days/guidelines.md
index ac1834e13..4cbe3e7c3 100644
--- a/Content/Chapter-9-2-problems-for-champions-part-2/passion-days/guidelines.md
+++ b/Content/Chapter-9-2-problems-for-champions-part-2/passion-days/guidelines.md
@@ -1,8 +1,8 @@
-### Насоки и подсказки
+### Hints and Guidelines
Ще разделим решението на задачата на три основни части:
-* **Обработка** на входа.
-* **Алгоритъм** на решаване.
-* **Форматиране** на изхода.
+ * **Обработка** на входа.
+ * **Алгоритъм** на решаване.
+ * **Форматиране** на изхода.
Нека разгледаме всяка една част в детайли.
\ No newline at end of file
diff --git a/Content/Chapter-9-2-problems-for-champions-part-2/passion-days/passion-days.md b/Content/Chapter-9-2-problems-for-champions-part-2/passion-days/passion-days.md
index d8a3bef59..bf31009da 100644
--- a/Content/Chapter-9-2-problems-for-champions-part-2/passion-days/passion-days.md
+++ b/Content/Chapter-9-2-problems-for-champions-part-2/passion-days/passion-days.md
@@ -1,4 +1,4 @@
-## Задача: дни за страстно пазаруване
+## Problem: дни за страстно пазаруване
Лина има истинска страст за пазаруване. Когато тя има малко пари, веднага отива в първия голям търговски център (мол) и се опитва да изхарчи възможно най-много за дрехи, чанти и обувки. Но любимото ѝ нещо са зимните намаления. Нашата задача е да анализираме странното ѝ поведение и да **изчислим покупките**, които Лина прави, когато влезе в мола, както и **парите, които ѝ остават**, когато приключи с пазаруването си.
@@ -14,13 +14,13 @@
Пазаруването завършва, когато се получи командата "**`mall.Exit`**". Когато това стане, трябва да **принтирате броя на извършени покупки и парите**, които са останали на Лина.
-### Входни данни
+### Input Data
Входните данни трябва да се четат от конзолата. На **първия ред** от входа ще бъде подадена **сумата, която Лина има преди да започне да пазарува**. На всеки следващ ред ще има определена команда. Когато получите командата **"mall.Enter"**, на всеки следващ ред ще получавате стрингове, съдържащи **информация относно покупките / действията**, които Лина иска да направи. Тези стрингове ще продължат да бъдат подавани, докато не се получи командата "**`mall.Exit`**".
Винаги ще се подава само една команда "**`mall.Enter`**" и само една команда "**`mall.Exit`**".
-### Изходни данни
+### Output Data
Изходните данни трябва да се **принтират на конзолата**.
Когато пазаруването приключи, на конзолата трябва да се принтира определен изход в зависимост от това какви покупки са били направени.
@@ -29,7 +29,7 @@
**Парите** трябва да се принтират с **точност от 2 символа след десетичния знак**.
-### Ограничения
+### Constraints
- Парите са число с **плаваща запетая** в интервала: [**0 - 7.9 x 10
28**].
- Броят стрингове между "**`mall.Enter`**" и "**`mall.Exit`**" ще в интервала: [**1-20**].
@@ -37,12 +37,12 @@
- Позволено време за изпълнение: **0.1 секунди**.
- Позволена памет: **16 MB**.
-### Примерен вход и изход
+### Sample Input and Output
-| Вход | Изход | Коментар |
+| Input | Output | Comments |
|----------------------------|------------------------------------|-----------|
| 110
mall.Enter
d
mall.Exit | 1 purchases. Money left: 80.00 lv. | ‘d’ има ASCII код 100. ‘d’ e малка буква и за това Лина получава 70% отстъпка. 100% – 70% = 30.110 – 30 = 80 лв. |
-| Вход | Изход |Вход | Изход |
+| Input | Output | Input | Output |
|------|-------|------|-------|
| 110
mall.Enter
%
mall.Exit|1 purchases. Money left: 55.00 lv.| 100
mall.Enter
Ab
\*\*
mall.Exit|2 purchases. Money left: 58.10 lv.|
diff --git a/Content/Chapter-9-2-problems-for-champions-part-2/passion-days/process-command-symbols.md b/Content/Chapter-9-2-problems-for-champions-part-2/passion-days/process-command-symbols.md
index 351411e1b..8d9d3e78f 100644
--- a/Content/Chapter-9-2-problems-for-champions-part-2/passion-days/process-command-symbols.md
+++ b/Content/Chapter-9-2-problems-for-champions-part-2/passion-days/process-command-symbols.md
@@ -18,6 +18,6 @@
![](/assets/chapter-9-2-images/01.Passion-days-04.png)
-**Забележка**: **`purchases`** е променлива от тип **`int`** , в която държим броя на всички покупки.
+**Note**: **`purchases`** е променлива от тип **`int`** , в която държим броя на всички покупки.
Смятаме, че читателят не би трябвало да изпита проблем при имплементацията на всички други проверки, защото са много сходни с първата.
diff --git a/Content/Chapter-9-2-problems-for-champions-part-2/passion-days/process-input-data.md b/Content/Chapter-9-2-problems-for-champions-part-2/passion-days/process-input-data.md
index 56d62890c..865ff6d52 100644
--- a/Content/Chapter-9-2-problems-for-champions-part-2/passion-days/process-input-data.md
+++ b/Content/Chapter-9-2-problems-for-champions-part-2/passion-days/process-input-data.md
@@ -1,4 +1,4 @@
-#### Обработване на входа
+#### Processing the Input
Входът за нашата задача се състои от няколко компонента:
- На **първия ред имаме всички пари**, с които Лина ще разполага за пазаруването.
diff --git a/Content/Preface/about-softuni/judge-system.md b/Content/Preface/about-softuni/judge-system.md
index d34216068..418cce929 100644
--- a/Content/Preface/about-softuni/judge-system.md
+++ b/Content/Preface/about-softuni/judge-system.md
@@ -1,6 +1,6 @@
### Judge системата за проверка на задачите
-**SoftUni Judge системата** (https://judge.softuni.bg) представлява автоматизирана система в Интернет **за проверка на решения на задачи по програмиране чрез поредица от тестове**. Предаването и проверката на задачите се извършва в **реално време**: пращате решение и след секунди получавате отговор дали е вярно. Всеки **успешно** преминат тест дава предвидените за него точки. При вярно решение получавате всички точки за задачата. При частично вярно решение получавате част от точките за дадената задача. При напълно грешно решение, получавате 0 точки.
+**The SoftUni judge system** (https://judge.softuni.bg) представлява автоматизирана система в Интернет **за проверка на решения на задачи по програмиране чрез поредица от тестове**. Предаването и проверката на задачите се извършва в **реално време**: пращате решение и след секунди получавате отговор дали е вярно. Всеки **успешно** преминат тест дава предвидените за него точки. При вярно решение получавате всички точки за задачата. При частично вярно решение получавате част от точките за дадената задача. При напълно грешно решение, получавате 0 точки.
**Всички задачи от настоящата книга са достъпни за тестване в SoftUni judge** и силно препоръчваме да ги тествате след като ги решите, за да знаете дали не изпускате нещо и дали наистина решението ви работи правилно, според изискванията на задачата.
@@ -8,9 +8,9 @@
- За всяка задача **judge системата пази най-високия постигнат резултат**. Ако качите решение с грешен код или по-слаб резултат от предишното ви изпратено, системата няма да ви отнеме точки.
- Изходните резултати на вашата програма се **сравняват** от системата стриктно с очаквания резултат. Всеки **излишен символ, липсваща запетайка или интервал** може доведе до 0 точки на съответния тест. **Изходът**, който judge системата очаква, е **описан в условието на всяка задача** и към него **не трябва да се добавя нищо повече**.
-**Пример:** ако в изхода се изисква да се отпечата число (напр. `25`), не извеждайте описателни съобщения като `The result is: 25`, а отпечатайте точно каквото се изисква, т.е. само числото.
+**Example:** ако в изхода се изисква да се отпечата число (напр. `25`), не извеждайте описателни съобщения като `The result is: 25`, а отпечатайте точно каквото се изисква, т.е. само числото.
-SoftUni judge системата е **достъпна по всяко време** от нейния сайт: [https://judge.softuni.bg](https://judge.softuni.bg).
+The SoftUni judge system е **достъпна по всяко време** от нейния сайт: [https://judge.softuni.bg](https://judge.softuni.bg).
- За вход използвайте автентикацията си от сайта на SoftUni: [https://softuni.bg](https://softuni.bg).
- Използването на системата е **безплатно** и не е обвързано с участието в курсовете на SoftUni.
diff --git a/Content/Preface/about-the-book/about-the-book.md b/Content/Preface/about-the-book/about-the-book.md
index ff488a49f..4dab5cfe3 100644
--- a/Content/Preface/about-the-book/about-the-book.md
+++ b/Content/Preface/about-the-book/about-the-book.md
@@ -16,6 +16,10 @@
Дизайн на корица: Марина Шидерова - https://behance.net/marinashiderova
+### Translator Teams
+
+TODO
+
## Официален сайт на книгата
Настоящата книга по **основи на програмирането със C#** за начинаещи е достъпна за свободно ползване в Интернет от адрес:
diff --git a/Content/Preface/how-to-become-a-programmer/how-to-become-a-programmer.md b/Content/Preface/how-to-become-a-programmer/how-to-become-a-programmer.md
index c9a608eb0..3bd61f3ba 100644
--- a/Content/Preface/how-to-become-a-programmer/how-to-become-a-programmer.md
+++ b/Content/Preface/how-to-become-a-programmer/how-to-become-a-programmer.md
@@ -5,7 +5,7 @@
Програмист (на ниво започване на работа в софтуерна фирма) се става за **най-малко 1-2 години здраво учене и писане на код всеки ден**, решаване на няколко хиляди задачи по програмиране, разработка на няколко по-сериозни практически проекта и трупане на много опит с писането на код и разработката на софтуер. Не става за един месец, нито за два! Професията на софтуерния инженер изисква голям обем познания, покрити с много, много практика.
Има **4 основни групи умения**, които всички програмисти трябва да притежават. Повечето от тези умения са устойчиви във времето и не се влияят съществено от развитието на конкретните технологии (които се променят постоянно). Това са уменията, които **всеки добър програмист притежава** и към които всеки новобранец трябва да се стреми:
-* писане на код (20%)
-* алгоритмично мислене (30%)
-* фундаментални знания за професията (25%)
-* езици и технологии за разработка (25%)
\ No newline at end of file
+ * писане на код (20%)
+ * алгоритмично мислене (30%)
+ * фундаментални знания за професията (25%)
+ * езици и технологии за разработка (25%)
diff --git a/Content/Preface/license/license.md b/Content/Preface/license/license.md
index f31e50301..b997822bb 100644
--- a/Content/Preface/license/license.md
+++ b/Content/Preface/license/license.md
@@ -6,4 +6,4 @@
**Сорс кодът** на книгата може да се намери в GitHub: https://github.com/SoftUni/Programming-Basics-Book-CSharp-BG.
-Международен стандартен номер на книга ISBN: **978-619-00-0635-0**.
\ No newline at end of file
+Международен стандартен номер на книга ISBN: **TODO**.
\ No newline at end of file
diff --git a/Content/Preface/the-book-in-other-programming-languages/the-book-in-other-programming-languages.md b/Content/Preface/the-book-in-other-programming-languages/the-book-in-other-programming-languages.md
index 80f2d4b1c..d2f5090fd 100644
--- a/Content/Preface/the-book-in-other-programming-languages/the-book-in-other-programming-languages.md
+++ b/Content/Preface/the-book-in-other-programming-languages/the-book-in-other-programming-languages.md
@@ -2,11 +2,11 @@
Настоящата книга по програмиране за напълно начинаещи е достъпна на няколко езика за програмиране (или е в процес на адаптация за тях):
* [Основи на програмирането със C#](https://csharp-book.softuni.bg)
+* [Programming Basics with C# (English)](https://csharp-book.softuni.bg)
* [Основи на програмирането с Java](https://java-book.softuni.bg)
* [Основи на програмирането с JavaScript](https://js-book.softuni.bg)
* [Основи на програмирането с Python](https://python-book.softuni.bg)
* [Основи на програмирането със C++](https://cpp-book.softuni.bg)
* [Основи на програмирането с PHP](https://php-book.softuni.bg)
-* [Основи на програмирането с Ruby](https://ruby-book.softuni.bg)
Ако предпочитате друг език, изберете си от списъка по-горе.
diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md
index 80ac1b0af..3a53ad4bf 100644
--- a/ISSUE_TEMPLATE.md
+++ b/ISSUE_TEMPLATE.md
@@ -1,7 +1,7 @@
-## Линк към файла
+## Link to the File
-## Описание
+## Description
-## Текущ текст
+## Current (Wrong) Text
-## Текст след поправката
+## Corrected (New) Text
diff --git a/SUMMARY.md b/SUMMARY.md
index 5ec1b29c2..9ceae358e 100644
--- a/SUMMARY.md
+++ b/SUMMARY.md
@@ -24,30 +24,30 @@
* [Езици от ниско и високо ниво, среди за изпълнение (Runtime Environments)](Content/Chapter-1-first-steps-in-programming/what-it-is-to-program/low-level-and-high-level-languages-runtime-env/low-and-high-level-languages-runtime-env.md)
* [Компютърни програми - компилация и изпълнение](Content/Chapter-1-first-steps-in-programming/what-it-is-to-program/computer-programs-compilation-execution/computer-programs-compilation-execution.md)
* [Компютърни програми – примери](Content/Chapter-1-first-steps-in-programming/what-it-is-to-program/examples-computer-programs/exercises-computer-programs.md)
- * [Пример: програма, която свири музикалната нота "ла"](Content/Chapter-1-first-steps-in-programming/what-it-is-to-program/examples-computer-programs/program-that-plays-note-la.md)
- * [Пример: програма, която свири поредица от музикални ноти](Content/Chapter-1-first-steps-in-programming/what-it-is-to-program/examples-computer-programs/program-that-plays-sequence-of-notes.md)
- * [Пример: програма, която конвертира от левове в евро](Content/Chapter-1-first-steps-in-programming/what-it-is-to-program/examples-computer-programs/program-that-converts-leva-to-eur.md)
+ * [Example: програма, която свири музикалната нота "ла"](Content/Chapter-1-first-steps-in-programming/what-it-is-to-program/examples-computer-programs/program-that-plays-note-la.md)
+ * [Example: програма, която свири поредица от музикални ноти](Content/Chapter-1-first-steps-in-programming/what-it-is-to-program/examples-computer-programs/program-that-plays-sequence-of-notes.md)
+ * [Example: програма, която конвертира от левове в евро](Content/Chapter-1-first-steps-in-programming/what-it-is-to-program/examples-computer-programs/program-that-converts-leva-to-eur.md)
* [Как да напишем конзолна програма?](Content/Chapter-1-first-steps-in-programming/how-to-write-console-app/how-to-write-console-app.md)
* [Среда за разработка (IDE)](Content/Chapter-1-first-steps-in-programming/how-to-write-console-app/ides/ides.md)
* [Инсталация на Visual Studio Community](Content/Chapter-1-first-steps-in-programming/how-to-write-console-app/visual-studio-installation/visual-studio-installation.md)
* [Онлайн среди за разработка](Content/Chapter-1-first-steps-in-programming/how-to-write-console-app/online-ides/online-ides.md)
* [Проектни решения и проекти във Visual Studio](Content/Chapter-1-first-steps-in-programming/how-to-write-console-app/projects-in-visual-studio/projects-in-visual-studio.md)
- * [Пример: създаване на конзолна програма "Hello C#"](Content/Chapter-1-first-steps-in-programming/how-to-write-console-app/example-hello-csharp/create-project.md)
+ * [Example: създаване на конзолна програма "Hello C#"](Content/Chapter-1-first-steps-in-programming/how-to-write-console-app/example-hello-csharp/create-project.md)
* [Писане на програмен код](Content/Chapter-1-first-steps-in-programming/how-to-write-console-app/example-hello-csharp/write-the-code.md)
* [Стартиране на програмата](Content/Chapter-1-first-steps-in-programming/how-to-write-console-app/example-hello-csharp/start-the-program.md)
* [Тестване на програмата в Judge системата](Content/Chapter-1-first-steps-in-programming/how-to-write-console-app/example-hello-csharp/test-in-judge.md)
* [Тествайте програмите за свирене на ноти](Content/Chapter-1-first-steps-in-programming/test-programs-that-plays-notes-in-judge/test-programs-that-plays-notes-in-judge.md)
* [Типични грешки в C# програмите](Content/Chapter-1-first-steps-in-programming/typical-mistakes-in-csharp/typical-mistakes-in-csharp.md)
- * [Какво научихме от тази глава?](Content/Chapter-1-first-steps-in-programming/what-we-learned/what-we-learned.md)
- * [Упражнения: първи стъпки в коденето](Content/Chapter-1-first-steps-in-programming/exercises-first-steps-in-coding/exercises-first-steps-in-coding.md)
- * [Задача: конзолна програма “Expression”](Content/Chapter-1-first-steps-in-programming/exercises-first-steps-in-coding/expression.md)
- * [Задача: числата от 1 до 20](Content/Chapter-1-first-steps-in-programming/exercises-first-steps-in-coding/numbers-1-to-20.md)
- * [Задача: триъгълник от 55 звездички](Content/Chapter-1-first-steps-in-programming/exercises-first-steps-in-coding/triangle-of-stars.md)
- * [Задача: лице на правоъгълник](Content/Chapter-1-first-steps-in-programming/exercises-first-steps-in-coding/rectangle-area.md)
- * [* Задача: квадрат от звездички](Content/Chapter-1-first-steps-in-programming/exercises-first-steps-in-coding/square-of-stars.md)
+ * [What We Learned in This Chapter?](Content/Chapter-1-first-steps-in-programming/what-we-learned/what-we-learned.md)
+ * [Exercises: първи стъпки в коденето](Content/Chapter-1-first-steps-in-programming/exercises-first-steps-in-coding/exercises-first-steps-in-coding.md)
+ * [Problem: конзолна програма “Expression”](Content/Chapter-1-first-steps-in-programming/exercises-first-steps-in-coding/expression.md)
+ * [Problem: числата от 1 до 20](Content/Chapter-1-first-steps-in-programming/exercises-first-steps-in-coding/numbers-1-to-20.md)
+ * [Problem: триъгълник от 55 звездички](Content/Chapter-1-first-steps-in-programming/exercises-first-steps-in-coding/triangle-of-stars.md)
+ * [Problem: лице на правоъгълник](Content/Chapter-1-first-steps-in-programming/exercises-first-steps-in-coding/rectangle-area.md)
+ * [* Problem: квадрат от звездички](Content/Chapter-1-first-steps-in-programming/exercises-first-steps-in-coding/square-of-stars.md)
* [Конзолни, графични и уеб приложения](Content/Chapter-1-first-steps-in-programming/console-graphical-web-apps/console-graphical-web-apps.md)
- * [Упражнения: графични и уеб приложения](Content/Chapter-1-first-steps-in-programming/exercises-graphical-and-web-apps/exercises-graphical-and-web-apps.md)
- * [Задача: графично приложение „Суматор за числа“](Content/Chapter-1-first-steps-in-programming/exercises-graphical-and-web-apps/sumator-graphical/sumator-graphical.md)
+ * [Exercises: графични и уеб приложения](Content/Chapter-1-first-steps-in-programming/exercises-graphical-and-web-apps/exercises-graphical-and-web-apps.md)
+ * [Problem: графично приложение „Суматор за числа“](Content/Chapter-1-first-steps-in-programming/exercises-graphical-and-web-apps/sumator-graphical/sumator-graphical.md)
* [Създаване на нов C# проект](Content/Chapter-1-first-steps-in-programming/exercises-graphical-and-web-apps/sumator-graphical/new-csharp-project.md)
* [Добавяне на текстови полета и бутон](Content/Chapter-1-first-steps-in-programming/exercises-graphical-and-web-apps/sumator-graphical/adding-text-fields-and-a-button.md)
* [Преоразмеряване на контролите и стартиране на приложението](Content/Chapter-1-first-steps-in-programming/exercises-graphical-and-web-apps/sumator-graphical/resizing-and-start.md)
@@ -62,14 +62,14 @@
* [2.1. Прости пресмятания](Content/Chapter-2-1-simple-calculations/overview.md)
* [Системна конзола](Content/Chapter-2-1-simple-calculations/system-console/system-console.md)
* [Четене на цели числа от конзолата](Content/Chapter-2-1-simple-calculations/reading-integers-from-console/reading-integers-from-console.md)
- * [Пример: пресмятане на лице на квадрат със страна а](Content/Chapter-2-1-simple-calculations/reading-integers-from-console/example-square-area/example-square-area.md)
+ * [Example: пресмятане на лице на квадрат със страна а](Content/Chapter-2-1-simple-calculations/reading-integers-from-console/example-square-area/example-square-area.md)
* [Как работи примерът?](Content/Chapter-2-1-simple-calculations/reading-integers-from-console/example-square-area/how-example-works.md)
* [Пресмятания в програмирането](Content/Chapter-2-1-simple-calculations/calculations-in-programming/calculations-in-programming.md)
* [Типове данни и променливи](Content/Chapter-2-1-simple-calculations/data-types-and-variables/data-types-and-variables.md)
* [Четене на дробни числа от конзолата](Content/Chapter-2-1-simple-calculations/reading-floats-from-console/reading-floats-from-console.md)
- * [Пример: прехвърляне от инчове в сантиметри](Content/Chapter-2-1-simple-calculations/reading-floats-from-console/example-inches-to-cent/example-inches-to-cent.md)
+ * [Example: прехвърляне от инчове в сантиметри](Content/Chapter-2-1-simple-calculations/reading-floats-from-console/example-inches-to-cent/example-inches-to-cent.md)
* [Четене на текст](Content/Chapter-2-1-simple-calculations/reading-text/reading-text.md)
- * [Пример: поздрав по име](Content/Chapter-2-1-simple-calculations/reading-text/example-greeting-by-name.md)
+ * [Example: поздрав по име](Content/Chapter-2-1-simple-calculations/reading-text/example-greeting-by-name.md)
* [Печатане на текст и числа](Content/Chapter-2-1-simple-calculations/printing-text-and-numbers/printing-text-and-numbers.md)
* [Аритметични операции](Content/Chapter-2-1-simple-calculations/arithmetical-operations/arithmetical-operations.md)
* [Събиране на числа (оператор +)](Content/Chapter-2-1-simple-calculations/arithmetical-operations/addition.md)
@@ -80,32 +80,32 @@
* [Дробно деление](Content/Chapter-2-1-simple-calculations/arithmetical-operations/division/floating-division.md)
* [Съединяване на текст и число](Content/Chapter-2-1-simple-calculations/concatenating-text-and-numbers/concatenating-text-and-numbers.md)
* [Числени изрази](Content/Chapter-2-1-simple-calculations/numerical-expressions/numerical-expressions.md)
- * [Пример: изчисляване на лице на трапец](Content/Chapter-2-1-simple-calculations/numerical-expressions/examples-numerical-expressions/trapezoid-area.md)
- * [Пример: периметър и лице на кръг](Content/Chapter-2-1-simple-calculations/numerical-expressions/examples-numerical-expressions/circle-area-and-perimeter.md)
- * [Пример: лице на правоъгълник в равнината](Content/Chapter-2-1-simple-calculations/numerical-expressions/examples-numerical-expressions/rectangle-area.md)
- * [Какво научихме от тази глава?](Content/Chapter-2-1-simple-calculations/what-we-learned/what-we-learned.md)
- * [Упражнения: прости пресмятания](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/exercises-simple-calculations.md)
+ * [Example: изчисляване на лице на трапец](Content/Chapter-2-1-simple-calculations/numerical-expressions/examples-numerical-expressions/trapezoid-area.md)
+ * [Example: периметър и лице на кръг](Content/Chapter-2-1-simple-calculations/numerical-expressions/examples-numerical-expressions/circle-area-and-perimeter.md)
+ * [Example: лице на правоъгълник в равнината](Content/Chapter-2-1-simple-calculations/numerical-expressions/examples-numerical-expressions/rectangle-area.md)
+ * [What We Learned in This Chapter?](Content/Chapter-2-1-simple-calculations/what-we-learned/what-we-learned.md)
+ * [Exercises: прости пресмятания](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/exercises-simple-calculations.md)
* [Празно Visual Studio решение (Blank Solution)](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/blank-visual-studio-solution.md)
- * [Задача: пресмятане на лице на квадрат](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/square-area/square-area.md)
+ * [Problem: пресмятане на лице на квадрат](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/square-area/square-area.md)
* [Насоки и подсказки](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/square-area/guidelines.md)
* [Тестване в Judge системата](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/square-area/test-in-judge.md)
- * [Задача: от инчове към сантиметри](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/inches-to-centimeters/inches-to-centimeters.md)
+ * [Problem: от инчове към сантиметри](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/inches-to-centimeters/inches-to-centimeters.md)
* [Писане на програмен код и стартиране на програмата](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/inches-to-centimeters/write-the-code-and-start-the-app.md)
* [Настройване на стартиращ проект](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/inches-to-centimeters/setting-startup-project.md)
* [Превключване между програмите](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/inches-to-centimeters/switching-programs.md)
* [Тестване на програмата локално](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/inches-to-centimeters/testing-program-locally.md)
* [Тестване в Judge системата](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/inches-to-centimeters/testing-in-judge.md)
- * [Задача: поздрав по име](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/greeting-by-name/greeting-by-name.md)
- * [Задача: съединяване на текст и числа](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/concatenate-data/concatenate-data.md)
- * [Задача: лице на трапец](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/trapezoid-area/trapezoid-area.md)
- * [Задача: периметър и лице на кръг](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/circle-area-and-perimeter/circle-area-and-perimeter.md)
- * [Задача: лице на правоъгълник в равнината](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/rectangle-area/rectangle-area.md)
- * [Задача: лице на триъгълник](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/triangle-area/triangle-area.md)
- * [Задача: конзолен конвертор - от градуси °C към градуси °F](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/celsius-to-fahrenheit/celsius-to-fahrenheit.md)
- * [Задача: конзолен конвертор - от радиани в градуси](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/radians-to-degrees/radians-to-degrees.md)
- * [Задача: конзолен конвертор - USD към BGN](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/usd-to-bgn/usd-to-bgn.md)
- * [Задача: * конзолен междувалутен конвертор](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/currency-converter/currency-converter.md)
- * [Задача: ** пресмятане с дати - 1000 дни на Земята](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/1000-days-after-birth/1000-days-after-birth.md)
+ * [Problem: поздрав по име](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/greeting-by-name/greeting-by-name.md)
+ * [Problem: съединяване на текст и числа](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/concatenate-data/concatenate-data.md)
+ * [Problem: лице на трапец](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/trapezoid-area/trapezoid-area.md)
+ * [Problem: периметър и лице на кръг](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/circle-area-and-perimeter/circle-area-and-perimeter.md)
+ * [Problem: лице на правоъгълник в равнината](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/rectangle-area/rectangle-area.md)
+ * [Problem: лице на триъгълник](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/triangle-area/triangle-area.md)
+ * [Problem: конзолен конвертор - от градуси °C към градуси °F](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/celsius-to-fahrenheit/celsius-to-fahrenheit.md)
+ * [Problem: конзолен конвертор - от радиани в градуси](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/radians-to-degrees/radians-to-degrees.md)
+ * [Problem: конзолен конвертор - USD към BGN](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/usd-to-bgn/usd-to-bgn.md)
+ * [Problem: * конзолен междувалутен конвертор](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/currency-converter/currency-converter.md)
+ * [Problem: ** пресмятане с дати - 1000 дни на Земята](Content/Chapter-2-1-simple-calculations/exercises-simple-calculations/1000-days-after-birth/1000-days-after-birth.md)
* [Графични приложения с числови изрази](Content/Chapter-2-1-simple-calculations/graphical-apps/graphical-apps.md)
* [Графично приложение: конвертор от BGN към EUR](Content/Chapter-2-1-simple-calculations/graphical-apps/bgn-to-eur-converter/bgn-to-eur-converter.md)
* [Създаване на нов C# проект](Content/Chapter-2-1-simple-calculations/graphical-apps/bgn-to-eur-converter/new-project.md)
@@ -118,28 +118,28 @@
* [Извеждане на текст по шаблон (placeholder)](Content/Chapter-2-2-simple-calculations-exam-problems/writing-text-using-placeholders/writing-text-using-placeholders.md)
* [Аритметични оператори](Content/Chapter-2-2-simple-calculations-exam-problems/arithmetical-operators/arithmetical-operators.md)
* [Конкатенация](Content/Chapter-2-2-simple-calculations-exam-problems/concatenation/concatenation.md)
- * [Изпитни задачи](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/exam-problems.md)
- * [Задача: учебна зала](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/training-lab/training-lab.md)
- * [Примерен вход/издох и пояснения към примерите](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/training-lab/sample-input-output-and-explanations.md)
+ * [Exam Problems](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/exam-problems.md)
+ * [Problem: учебна зала](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/training-lab/training-lab.md)
+ * [Примерен вход/изход и пояснения към примерите](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/training-lab/sample-input-output-and-explanations.md)
* [Насоки и подсказки](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/training-lab/guidelines-and-a-sample-idea-for-solution.md)
* [Избор на типове данни](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/training-lab/choosing-data-types.md)
* [Решение - част I](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/training-lab/sample-solution-part-1.md)
* [Решение - част II](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/training-lab/sample-solution-part-2.md)
- * [Задача: зеленчукова борса](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/vegetables-market/vegetables-market.md)
+ * [Problem: зеленчукова борса](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/vegetables-market/vegetables-market.md)
* [Насоки и подсказки](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/vegetables-market/guidelines-and-a-sample-idea-for-solution.md)
* [Избор на типове данни](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/vegetables-market/choosing-data-types.md)
- * [Решение](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/vegetables-market/sample-salution.md)
- * [Задача: ремонт на плочки](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/change-tiles/change-tiles.md)
+ * [Solution](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/vegetables-market/sample-salution.md)
+ * [Problem: ремонт на плочки](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/change-tiles/change-tiles.md)
* [Насоки и подсказки](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/change-tiles/guidelines-and-a-sample-idea-for-solution.md)
* [Избор на типове данни](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/change-tiles/choosing-data-types.md)
* [Прочитане на входните данни](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/change-tiles/read-input-data.md)
* [Извършване на изчисленията](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/change-tiles/calculations.md)
- * [Задача: парички](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/money/money.md)
+ * [Problem: парички](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/money/money.md)
* [Насоки и подсказки](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/money/guidelines-and-a-sample-idea-for-solution.md)
* [Избор на типове данни](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/money/choosing-data-types.md)
* [Решение - част I](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/money/sample-solution-part-1.md)
* [Решение - част II](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/money/sample-solution-part-2.md)
- * [Задача: дневна печалба](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/daily-earnings/daily-earnings.md)
+ * [Problem: дневна печалба](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/daily-earnings/daily-earnings.md)
* [Насоки и подсказки](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/daily-earnings/guidelines-and-a-sample-idea-for-solution.md)
* [Избор на типове данни](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/daily-earnings/choosing-data-types.md)
* [Прочитане на входните данни и извършване на изчисленията](Content/Chapter-2-2-simple-calculations-exam-problems/exam-problems/daily-earnings/read-input-data-and-calculations.md)
@@ -148,113 +148,113 @@
* [Сравняване на числа](Content/Chapter-3-1-simple-conditions/comparing-numbers/comparing-numbers.md)
* [Оператори за сравнение](Content/Chapter-3-1-simple-conditions/comparing-numbers/comparison-operators.md)
* [Прости проверки](Content/Chapter-3-1-simple-conditions/simple-conditions/simple-conditions.md)
- * [Пример: отлична оценка](Content/Chapter-3-1-simple-conditions/simple-conditions/example-excellent-grade.md)
+ * [Example: отлична оценка](Content/Chapter-3-1-simple-conditions/simple-conditions/example-excellent-grade.md)
* [Проверки с if-else конструкция](Content/Chapter-3-1-simple-conditions/if-else-conditions/if-else-conditions.md)
- * [Пример: отлична оценка или не](Content/Chapter-3-1-simple-conditions/if-else-conditions/example-excellent-grade-or-not.md)
+ * [Example: отлична оценка или не](Content/Chapter-3-1-simple-conditions/if-else-conditions/example-excellent-grade-or-not.md)
* [За къдравите скоби { } след if / else](Content/Chapter-3-1-simple-conditions/if-else-conditions/curly-braces-after-if-else.md)
- * [Пример: четно или нечетно](Content/Chapter-3-1-simple-conditions/if-else-conditions/example-even-or-odd.md)
- * [Пример: по-голямото число](Content/Chapter-3-1-simple-conditions/if-else-conditions/example-greater-number.md)
+ * [Example: четно или нечетно](Content/Chapter-3-1-simple-conditions/if-else-conditions/example-even-or-odd.md)
+ * [Example: по-голямото число](Content/Chapter-3-1-simple-conditions/if-else-conditions/example-greater-number.md)
* [Живот на променлива](Content/Chapter-3-1-simple-conditions/variable-lifetime/variable-lifetime.md)
* [Серии от проверки](Content/Chapter-3-1-simple-conditions/sequence-of-conditions/sequence-of-conditions.md)
- * [Пример: число от 1 до 9 на английски](Content/Chapter-3-1-simple-conditions/sequence-of-conditions/example-digit-in-english.md)
- * [Упражнения: прости проверки](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/exercises-simple-conditions-part-1.md)
- * [Задача: бонус точки](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/bonus-score/bonus-score.md)
+ * [Example: число от 1 до 9 на английски](Content/Chapter-3-1-simple-conditions/sequence-of-conditions/example-digit-in-english.md)
+ * [Exercises: прости проверки](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/exercises-simple-conditions-part-1.md)
+ * [Problem: бонус точки](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/bonus-score/bonus-score.md)
* [Насоки и подсказки и тестване в Judge системата](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/bonus-score/guidelines.md)
- * [Задача: сумиране на секунди](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/sum-seconds/sum-seconds.md)
+ * [Problem: сумиране на секунди](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/sum-seconds/sum-seconds.md)
* [Насоки и подсказки и тестване в Judge системата](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/sum-seconds/guidelines.md)
- * [Задача: конвертор за мерни единици](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/metric-converter/metric-converter.md)
+ * [Problem: конвертор за мерни единици](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/metric-converter/metric-converter.md)
* [Насоки и подсказки и тестване в Judge системата](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/metric-converter/guidelines.md)
* [Дебъгване - прости операции с дебъгер](Content/Chapter-3-1-simple-conditions/debugging/debugging.md)
* [Дебъгване във Visual Studio](Content/Chapter-3-1-simple-conditions/debugging/debugging-in-visual-studio.md)
- * [Упражнения: прости проверки](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/exercises-simple-conditions-part-2.md)
- * [Задача: проверка за отлична оценка](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/excellent-grade/excellent-grade.md)
+ * [Exercises: прости проверки](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/exercises-simple-conditions-part-2.md)
+ * [Problem: проверка за отлична оценка](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/excellent-grade/excellent-grade.md)
* [Създаване на нов C# проект](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/excellent-grade/create-new-project.md)
* [Писане на програмния код](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/excellent-grade/writing-the-code.md)
* [Тестване в Judge системата](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/excellent-grade/testing-in-judge.md)
- * [Задача: отлична оценка или не](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/excellent-grade-or-not/excellent-grade-or-not.md)
+ * [Problem: отлична оценка или не](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/excellent-grade-or-not/excellent-grade-or-not.md)
* [Създаване на нов C# проект и писане на програмния код](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/excellent-grade-or-not/creating-new-project-and-writing-the-code.md)
* [Aвтоматично превключване към текущия проект](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/excellent-grade-or-not/auto-set-startup-project.md)
* [Тестване локално и в Judge системата](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/excellent-grade-or-not/test-the-app.md)
- * [Задача: четно или нечетно](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/even-or-odd/even-or-odd.md)
+ * [Problem: четно или нечетно](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/even-or-odd/even-or-odd.md)
* [Насоки и подсказки и тестване в Judge системата](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/even-or-odd/guidelines.md)
- * [Задача: намиране на по-голямото число](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/greater-number/greater-number.md)
+ * [Problem: намиране на по-голямото число](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/greater-number/greater-number.md)
* [Насоки и подсказки и тестване в Judge системата](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/greater-number/guidelines.md)
- * [Задача: изписване на число до 9 с думи](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/digit-in-english/digit-in-english.md)
- * [Задача: познай паролата](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/guess-the-password/guess-the-password.md)
- * [Задача: число от 100 до 200](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/number-100-to-200/number-100-to-200.md)
- * [Задача: еднакви думи](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/equal-words/equal-words.md)
- * [Задача: информация за скоростта](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/speed-info/speed-info.md)
- * [Задача: лица на фигури](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/area-of-figures/area-of-figures.md)
- * [Задача: време + 15 минути](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/time-plus-15-mins/time-plus-15-mins.md)
- * [Задача: еднакви 3 числа](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/equal-numbers/equal-numbers.md)
- * [Задача: * изписване на число от 0 до 100 с думи](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/number-to-words/number-to-words.md)
+ * [Problem: изписване на число до 9 с думи](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/digit-in-english/digit-in-english.md)
+ * [Problem: познай паролата](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/guess-the-password/guess-the-password.md)
+ * [Problem: число от 100 до 200](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/number-100-to-200/number-100-to-200.md)
+ * [Problem: еднакви думи](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/equal-words/equal-words.md)
+ * [Problem: информация за скоростта](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/speed-info/speed-info.md)
+ * [Problem: лица на фигури](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/area-of-figures/area-of-figures.md)
+ * [Problem: време + 15 минути](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/time-plus-15-mins/time-plus-15-mins.md)
+ * [Problem: еднакви 3 числа](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/equal-numbers/equal-numbers.md)
+ * [Problem: * изписване на число от 0 до 100 с думи](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/number-to-words/number-to-words.md)
* [Графично (desktop) приложение: конвертор за валути](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/graphical-app/graphical-app.md)
* [Създаване на нов C# проект и добавяне на контроли](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/graphical-app/create-new-project-and-controls.md)
* [Конфигуриране на контролите](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/graphical-app/configuring-controls.md)
* [Събития и обработчици на събития](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/graphical-app/events-and-eventhandlers.md)
* [Писане на програмния код](Content/Chapter-3-1-simple-conditions/exercises-simple-conditions/graphical-app/writing-the-code.md)
* [3.2. Прости проверки – изпитни задачи](Content/Chapter-3-2-simple-conditions-exam-problems/overview.md)
- * [Изпитни задачи](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/exam-problems.md)
- * [Задача: цена за транспорт](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/ticket-price/ticket-price.md)
+ * [Exam Problems](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/exam-problems.md)
+ * [Problem: цена за транспорт](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/ticket-price/ticket-price.md)
* [Обработка на входните данни](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/ticket-price/process-input-data.md)
* [Изчисляване тарифата на таксито](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/ticket-price/calc-taxi-rate.md)
* [Изчисляване цената на транспорта](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/ticket-price/calc-ticket-price.md)
* [Отпечатване на изходните данни](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/ticket-price/print-output.md)
- * [Задача: тръби в басейн](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/pipes-in-pool/pipes-in-pool.md)
+ * [Problem: тръби в басейн](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/pipes-in-pool/pipes-in-pool.md)
* [Обработка на входните данни](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/pipes-in-pool/process-input-data.md)
* [Извършване на проверки и обработка на изходните данни](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/pipes-in-pool/check-input-data-and-process-output-data.md)
- * [Задача: поспаливата котка Том](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/sleepy-tom-cat/sleepy-tom-cat.md)
+ * [Problem: поспаливата котка Том](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/sleepy-tom-cat/sleepy-tom-cat.md)
* [Прочитане на входните данни](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/sleepy-tom-cat/read-input-data.md)
* [Изчисляване на работните дни](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/sleepy-tom-cat/calc-working-days.md)
* [Изчисляване на времето за игра](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/sleepy-tom-cat/calc-playing-time.md)
* [Извършване на проверки и обработка на изходните данни](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/sleepy-tom-cat/checks-and-process-output-data.md)
- * [Задача: реколта](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/harvest/harvest.md)
+ * [Problem: реколта](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/harvest/harvest.md)
* [Обработка на входните данни и прилежащи изчисления](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/harvest/process-input-data.md)
* [Извършване на проверки и обработка на изходните данни](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/harvest/process-output-data.md)
- * [Задача: фирма](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/firm/firm.md)
+ * [Problem: фирма](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/firm/firm.md)
* [Прочитане на входните данни](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/firm/read-input-data.md)
* [Помощни изчисления](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/firm/calculations.md)
* [Извършване на проверки и отпечатване на изходните данни](Content/Chapter-3-2-simple-conditions-exam-problems/exam-problems/firm/checks.md)
* [4.1. По-сложни проверки](Content/Chapter-4-1-complex-conditions/overview.md)
* [Вложени проверки](Content/Chapter-4-1-complex-conditions/nested-conditions/nested-conditions.md)
- * [Пример: обръщение според възраст и пол](Content/Chapter-4-1-complex-conditions/nested-conditions/example-personal-titles/personal-titles.md)
- * [Решение](Content/Chapter-4-1-complex-conditions/nested-conditions/example-personal-titles/solution.md)
- * [Пример: квартално магазинче](Content/Chapter-4-1-complex-conditions/nested-conditions/example-small-shop/small-shop.md)
- * [Решение](Content/Chapter-4-1-complex-conditions/nested-conditions/example-small-shop/solution.md)
+ * [Example: обръщение според възраст и пол](Content/Chapter-4-1-complex-conditions/nested-conditions/example-personal-titles/personal-titles.md)
+ * [Solution](Content/Chapter-4-1-complex-conditions/nested-conditions/example-personal-titles/solution.md)
+ * [Example: квартално магазинче](Content/Chapter-4-1-complex-conditions/nested-conditions/example-small-shop/small-shop.md)
+ * [Solution](Content/Chapter-4-1-complex-conditions/nested-conditions/example-small-shop/solution.md)
* [По-сложни проверки](Content/Chapter-4-1-complex-conditions/complex-conditions/complex-conditions.md)
* [Логическо "И"](Content/Chapter-4-1-complex-conditions/complex-conditions/logical-and/logical-and.md)
* [Как работи операторът && ?](Content/Chapter-4-1-complex-conditions/complex-conditions/logical-and/how-logical-and-works.md)
- * [Пример: точка в правоъгълник](Content/Chapter-4-1-complex-conditions/complex-conditions/logical-and/example-point-in-rectangle/example-point-in-rectangle.md)
- * [Решение](Content/Chapter-4-1-complex-conditions/complex-conditions/logical-and/example-point-in-rectangle/solution.md)
+ * [Example: точка в правоъгълник](Content/Chapter-4-1-complex-conditions/complex-conditions/logical-and/example-point-in-rectangle/example-point-in-rectangle.md)
+ * [Solution](Content/Chapter-4-1-complex-conditions/complex-conditions/logical-and/example-point-in-rectangle/solution.md)
* [Логическо "ИЛИ"](Content/Chapter-4-1-complex-conditions/complex-conditions/logical-or/logical-or.md)
* [Как работи операторът || ?](Content/Chapter-4-1-complex-conditions/complex-conditions/logical-or/how-logical-or-works.md)
- * [Пример: плод или зеленчук](Content/Chapter-4-1-complex-conditions/complex-conditions/logical-or/example-fruit-or-vegetable/example-fruit-or-vegetable.md)
- * [Решение](Content/Chapter-4-1-complex-conditions/complex-conditions/logical-or/example-fruit-or-vegetable/solution.md)
+ * [Example: плод или зеленчук](Content/Chapter-4-1-complex-conditions/complex-conditions/logical-or/example-fruit-or-vegetable/example-fruit-or-vegetable.md)
+ * [Solution](Content/Chapter-4-1-complex-conditions/complex-conditions/logical-or/example-fruit-or-vegetable/solution.md)
* [Логическо отрицание](Content/Chapter-4-1-complex-conditions/complex-conditions/logical-negation/logical-negation.md)
- * [Пример: невалидно число](Content/Chapter-4-1-complex-conditions/complex-conditions/logical-negation/example-invalid-number.md)
+ * [Example: невалидно число](Content/Chapter-4-1-complex-conditions/complex-conditions/logical-negation/example-invalid-number.md)
* [Операторът скоби ()](Content/Chapter-4-1-complex-conditions/complex-conditions/operator-parentheses/operator-parentheses.md)
* [По-сложни логически условия](Content/Chapter-4-1-complex-conditions/complex-logical-conditions/complex-logical-conditions.md)
- * [Пример: точка върху страна на правоъгълник](Content/Chapter-4-1-complex-conditions/complex-logical-conditions/example-point-on-rectangle-border/point-on-rectangle-border.md)
- * [Решение](Content/Chapter-4-1-complex-conditions/complex-logical-conditions/example-point-on-rectangle-border/solution.md)
- * [Пример: магазин за плодове](Content/Chapter-4-1-complex-conditions/complex-logical-conditions/example-fruit-shop/fruit-shop.md)
- * [Решение](Content/Chapter-4-1-complex-conditions/complex-logical-conditions/example-fruit-shop/solution.md)
- * [Пример: търговски комисионни](Content/Chapter-4-1-complex-conditions/complex-logical-conditions/example-trade-comissions/trade-comissions.md)
- * [Решение](Content/Chapter-4-1-complex-conditions/complex-logical-conditions/example-trade-comissions/solution.md)
+ * [Example: точка върху страна на правоъгълник](Content/Chapter-4-1-complex-conditions/complex-logical-conditions/example-point-on-rectangle-border/point-on-rectangle-border.md)
+ * [Solution](Content/Chapter-4-1-complex-conditions/complex-logical-conditions/example-point-on-rectangle-border/solution.md)
+ * [Example: магазин за плодове](Content/Chapter-4-1-complex-conditions/complex-logical-conditions/example-fruit-shop/fruit-shop.md)
+ * [Solution](Content/Chapter-4-1-complex-conditions/complex-logical-conditions/example-fruit-shop/solution.md)
+ * [Example: търговски комисионни](Content/Chapter-4-1-complex-conditions/complex-logical-conditions/example-trade-comissions/trade-comissions.md)
+ * [Solution](Content/Chapter-4-1-complex-conditions/complex-logical-conditions/example-trade-comissions/solution.md)
* [Условна конструкция switch-case](Content/Chapter-4-1-complex-conditions/switch-case-construction/switch-case-construction.md)
- * [Пример: ден от седмицата](Content/Chapter-4-1-complex-conditions/switch-case-construction/example-day-of-week.md)
+ * [Example: ден от седмицата](Content/Chapter-4-1-complex-conditions/switch-case-construction/example-day-of-week.md)
* [Множество етикети в switch-case](Content/Chapter-4-1-complex-conditions/switch-case-construction/multiple-cases.md)
- * [Пример: вид животно](Content/Chapter-4-1-complex-conditions/switch-case-construction/example-animal-type.md)
- * [Какво научихме от тази глава?](Content/Chapter-4-1-complex-conditions/what-we-learned/what-we-learned.md)
- * [Упражнения: по-сложни проверки](Content/Chapter-4-1-complex-conditions/exercises-complex-conditions/exercises-complex-conditions.md)
- * [Задача: кино](Content/Chapter-4-1-complex-conditions/exercises-complex-conditions/cinema/cinema.md)
+ * [Example: вид животно](Content/Chapter-4-1-complex-conditions/switch-case-construction/example-animal-type.md)
+ * [What We Learned in This Chapter?](Content/Chapter-4-1-complex-conditions/what-we-learned/what-we-learned.md)
+ * [Exercises: по-сложни проверки](Content/Chapter-4-1-complex-conditions/exercises-complex-conditions/exercises-complex-conditions.md)
+ * [Problem: кино](Content/Chapter-4-1-complex-conditions/exercises-complex-conditions/cinema/cinema.md)
* [Насоки и подсказки](Content/Chapter-4-1-complex-conditions/exercises-complex-conditions/cinema/guidelines.md)
- * [Задача: волейбол](Content/Chapter-4-1-complex-conditions/exercises-complex-conditions/volleyball/volleyball.md)
+ * [Problem: волейбол](Content/Chapter-4-1-complex-conditions/exercises-complex-conditions/volleyball/volleyball.md)
* [Насоки и подсказки](Content/Chapter-4-1-complex-conditions/exercises-complex-conditions/volleyball/guidelines.md)
- * [Задача: * точка във фигурата](Content/Chapter-4-1-complex-conditions/exercises-complex-conditions/point-in-the-figure/point-in-the-figure.md)
+ * [Problem: * точка във фигурата](Content/Chapter-4-1-complex-conditions/exercises-complex-conditions/point-in-the-figure/point-in-the-figure.md)
* [Насоки и подсказки](Content/Chapter-4-1-complex-conditions/exercises-complex-conditions/point-in-the-figure/guidelines.md)
* [Реализация на описаната идея](Content/Chapter-4-1-complex-conditions/exercises-complex-conditions/point-in-the-figure/implementation-of-the-idea.md)
- * [Упражнения: графично приложение с по-сложни проверки](Content/Chapter-4-1-complex-conditions/graphical-app/graphical-app.md)
- * [Задача: * точка и правоъгълник – графично (GUI) приложение](Content/Chapter-4-1-complex-conditions/graphical-app/point-and-rectangle.md)
+ * [Exercises: графично приложение с по-сложни проверки](Content/Chapter-4-1-complex-conditions/graphical-app/graphical-app.md)
+ * [Problem: * точка и правоъгълник – графично (GUI) приложение](Content/Chapter-4-1-complex-conditions/graphical-app/point-and-rectangle.md)
* [Създаване на нов C# проект и добавяне на контроли](Content/Chapter-4-1-complex-conditions/graphical-app/create-new-project-and-controls.md)
* [Конфигуриране на контролите](Content/Chapter-4-1-complex-conditions/graphical-app/configuring-controls.md)
* [Събития](Content/Chapter-4-1-complex-conditions/graphical-app/events.md)
@@ -264,31 +264,31 @@
* [4.2. По-сложни проверки – изпитни задачи](Content/Chapter-4-2-complex-conditions-exam-problems/overview.md)
* [Вложени проверки](Content/Chapter-4-2-complex-conditions-exam-problems/nested-conditions/nested-conditions.md)
* [Switch-case проверки](Content/Chapter-4-2-complex-conditions-exam-problems/switch-case-construction/switch-case-construction.md)
- * [Изпитни задачи](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/exam-problems.md)
- * [Задача: навреме за изпит](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/on-time-for-the-exam/on-time-for-the-exam.md)
+ * [Exam Problems](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/exam-problems.md)
+ * [Problem: навреме за изпит](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/on-time-for-the-exam/on-time-for-the-exam.md)
* [Обработка на входните данни](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/on-time-for-the-exam/process-input-data.md)
* [Изчисляване началния час на изпита и времето на пристигане на студента](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/on-time-for-the-exam/calc-exam-start-time-and-student-arrival-time.md)
* [Проверяване дали студентът е пристигнал навреме или е закъснял](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/on-time-for-the-exam/check-if-student-is-late.md)
* [Изчисляване разликата между времената](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/on-time-for-the-exam/calc-time-difference.md)
* [Отпечатване на резултата](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/on-time-for-the-exam/print-output.md)
- * [Задача: пътешествие](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/trip/trip.md)
+ * [Problem: пътешествие](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/trip/trip.md)
* [Обработка на входните данни](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/trip/process-input-data.md)
* [Изчисления](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/trip/calculations.md)
* [Писане на програмния код](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/trip/writing-the-code.md)
* [Отпечатване на резултата](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/trip/print-output.md)
- * [Задача: операции между числа](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/operations/operations.md)
+ * [Problem: операции между числа](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/operations/operations.md)
* [Обработка на входните данни](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/operations/process-input-data.md)
* [Проверяване за 0](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/operations/check-for-zero.md)
* [Проверяване за деление и модулно деление](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/operations/check-for-division-and-module.md)
* [Проверяване за събиране, изваждане и умножение](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/operations/check-for-addition-multiplication-subtraction.md)
* [Използване на тернарен оператор](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/operations/using-ternary-operator.md)
* [Отпечатване на резултата](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/operations/print-output.md)
- * [Задача: билети за мач](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/match-tickets/match-tickets.md)
+ * [Problem: билети за мач](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/match-tickets/match-tickets.md)
* [Обработка на входните данни](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/match-tickets/process-input-data.md)
* [Изчисляване на транспортните разходи](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/match-tickets/calc-transport-charges.md)
* [Изчисляване на билетните разходи](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/match-tickets/calc-ticket-charges.md)
* [Изчисляване на общите разходи и отпечатване на резултата](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/match-tickets/calc-total-charges-and-print-output.md)
- * [Задача: хотелска стая](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/hotel-room/hotel-room.md)
+ * [Problem: хотелска стая](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/hotel-room/hotel-room.md)
* [Обработка на входните данни](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/hotel-room/process-input-data.md)
* [Създаване на помощни променливи](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/hotel-room/create-helper-variables.md)
* [Изчисляване цените за престой през Май и Октомври](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/hotel-room/calc-prices-for-may-october.md)
@@ -296,144 +296,144 @@
* [Форматиране на изходните данни](Content/Chapter-4-2-complex-conditions-exam-problems/exam-problems/hotel-room/format-and-print-output-data.md)
* [5.1. Повторения \(цикли\)](Content/Chapter-5-1-loops/overview.md)
* [Повторения на блокове код (for цикъл)](Content/Chapter-5-1-loops/for-loop/for-loop.md)
- * [Пример: числа от 1 до 100](Content/Chapter-5-1-loops/for-loop/example-numbers-1-to-100.md)
- * [Пример: числа до 1000, завършващи на 7](Content/Chapter-5-1-loops/examples-for-loops/example-numbers-ending-in-7.md)
- * [Пример: всички латински букви](Content/Chapter-5-1-loops/examples-for-loops/example-latin-letters.md)
- * [Пример: сумиране на числа](Content/Chapter-5-1-loops/examples-for-loops/example-sum-numbers/example-sum-numbers.md)
+ * [Example: числа от 1 до 100](Content/Chapter-5-1-loops/for-loop/example-numbers-1-to-100.md)
+ * [Example: числа до 1000, завършващи на 7](Content/Chapter-5-1-loops/examples-for-loops/example-numbers-ending-in-7.md)
+ * [Example: всички латински букви](Content/Chapter-5-1-loops/examples-for-loops/example-latin-letters.md)
+ * [Example: сумиране на числа](Content/Chapter-5-1-loops/examples-for-loops/example-sum-numbers/example-sum-numbers.md)
* [Насоки и подсказки](Content/Chapter-5-1-loops/examples-for-loops/example-sum-numbers/guidelines.md)
- * [Пример: най-голямо число](Content/Chapter-5-1-loops/examples-for-loops/example-max-number/example-max-number.md)
+ * [Example: най-голямо число](Content/Chapter-5-1-loops/examples-for-loops/example-max-number/example-max-number.md)
* [Насоки и подсказки](Content/Chapter-5-1-loops/examples-for-loops/example-max-number/guidelines.md)
- * [Пример: най-малко число](Content/Chapter-5-1-loops/examples-for-loops/example-min-number/example-min-number.md)
+ * [Example: най-малко число](Content/Chapter-5-1-loops/examples-for-loops/example-min-number/example-min-number.md)
* [Насоки и подсказки](Content/Chapter-5-1-loops/examples-for-loops/example-min-number/guidelines.md)
- * [Пример: лява и дясна сума](Content/Chapter-5-1-loops/examples-for-loops/example-left-and-right-sum/example-left-and-right-sum.md)
+ * [Example: лява и дясна сума](Content/Chapter-5-1-loops/examples-for-loops/example-left-and-right-sum/example-left-and-right-sum.md)
* [Насоки и подсказки](Content/Chapter-5-1-loops/examples-for-loops/example-left-and-right-sum/guidelines.md)
- * [Пример: четна / нечетна сума](Content/Chapter-5-1-loops/examples-for-loops/example-even-odd-sum/example-even-odd-sum.md)
+ * [Example: четна / нечетна сума](Content/Chapter-5-1-loops/examples-for-loops/example-even-odd-sum/example-even-odd-sum.md)
* [Насоки и подсказки](Content/Chapter-5-1-loops/examples-for-loops/example-even-odd-sum/guidelines.md)
- * [Пример: сумиране на гласните букви](Content/Chapter-5-1-loops/examples-for-loops/example-vowels-sum/example-vowels-sum.md)
+ * [Example: сумиране на гласните букви](Content/Chapter-5-1-loops/examples-for-loops/example-vowels-sum/example-vowels-sum.md)
* [Насоки и подсказки](Content/Chapter-5-1-loops/examples-for-loops/example-vowels-sum/guidelines.md)
* [Code Snippet за for цикъл във Visual Studio](Content/Chapter-5-1-loops/code-snippet-for-for-loop/code-snippet-for-for-loop.md)
- * [Какво научихме от тази глава?](Content/Chapter-5-1-loops/what-we-learned/what-we-learned.md)
- * [Упражнения: повторения (цикли)](Content/Chapter-5-1-loops/exercises-loops/exercises-loops.md)
+ * [What We Learned in This Chapter?](Content/Chapter-5-1-loops/what-we-learned/what-we-learned.md)
+ * [Exercises: повторения (цикли)](Content/Chapter-5-1-loops/exercises-loops/exercises-loops.md)
* [Празно Visual Studio решение (Blank Solution)](Content/Chapter-5-1-loops/exercises-loops/blank-visual-studio-solution.md)
- * [Задача: елемент, равен на сумата на останалите](Content/Chapter-5-1-loops/exercises-loops/half-sum-element.md)
- * [Задача: четни / нечетни позиции](Content/Chapter-5-1-loops/exercises-loops/even-odd-positions.md)
- * [Задача: еднакви двойки](Content/Chapter-5-1-loops/exercises-loops/equal-pairs.md)
- * [Упражнения: графични и уеб приложения](Content/Chapter-5-1-loops/graphical-and-web-apps/graphical-and-web-apps.md)
- * [Задача: чертане с костенурка – графично GUI приложение](Content/Chapter-5-1-loops/graphical-and-web-apps/drawing-with-turtle/drawing-with-turtle.md)
+ * [Problem: елемент, равен на сумата на останалите](Content/Chapter-5-1-loops/exercises-loops/half-sum-element.md)
+ * [Problem: четни / нечетни позиции](Content/Chapter-5-1-loops/exercises-loops/even-odd-positions.md)
+ * [Problem: еднакви двойки](Content/Chapter-5-1-loops/exercises-loops/equal-pairs.md)
+ * [Exercises: графични и уеб приложения](Content/Chapter-5-1-loops/graphical-and-web-apps/graphical-and-web-apps.md)
+ * [Problem: чертане с костенурка – графично GUI приложение](Content/Chapter-5-1-loops/graphical-and-web-apps/drawing-with-turtle/drawing-with-turtle.md)
* [Създаване на нов C# проект](Content/Chapter-5-1-loops/graphical-and-web-apps/drawing-with-turtle/create-new-project.md)
* [Инсталиране на Turtle Graphics NuGet пакет](Content/Chapter-5-1-loops/graphical-and-web-apps/drawing-with-turtle/install-nuget-package.md)
* [Добавяне на бутони](Content/Chapter-5-1-loops/graphical-and-web-apps/drawing-with-turtle/adding-buttons.md)
* [Имплементиране на бутона Draw и тестване на приложението](Content/Chapter-5-1-loops/graphical-and-web-apps/drawing-with-turtle/implement-draw-button-and-test-the-app.md)
* [Усложняване кода на костенурката](Content/Chapter-5-1-loops/graphical-and-web-apps/drawing-with-turtle/adding-complexity-to-turtle.md)
* [Имплементиране на бутоните [Reset] и [Show / Hide Turtle]](Content/Chapter-5-1-loops/graphical-and-web-apps/drawing-with-turtle/implement-other-buttons.md)
- * [Задача: * чертане на шестоъгълник с костенурката](Content/Chapter-5-1-loops/graphical-and-web-apps/drawing-hexagon.md)
- * [Задача: * чертане на звезда с костенурката](Content/Chapter-5-1-loops/graphical-and-web-apps/drawing-star.md)
- * [Задача: * чертане на спирала с костенурката](Content/Chapter-5-1-loops/graphical-and-web-apps/drawing-spiral.md)
- * [Задача: * чертане на слънце с костенурката](Content/Chapter-5-1-loops/graphical-and-web-apps/drawing-sun.md)
- * [Задача: * чертане на спирален триъгълник с костенурката](Content/Chapter-5-1-loops/graphical-and-web-apps/drawing-spiral-triangle.md)
+ * [Problem: * чертане на шестоъгълник с костенурката](Content/Chapter-5-1-loops/graphical-and-web-apps/drawing-hexagon.md)
+ * [Problem: * чертане на звезда с костенурката](Content/Chapter-5-1-loops/graphical-and-web-apps/drawing-star.md)
+ * [Problem: * чертане на спирала с костенурката](Content/Chapter-5-1-loops/graphical-and-web-apps/drawing-spiral.md)
+ * [Problem: * чертане на слънце с костенурката](Content/Chapter-5-1-loops/graphical-and-web-apps/drawing-sun.md)
+ * [Problem: * чертане на спирален триъгълник с костенурката](Content/Chapter-5-1-loops/graphical-and-web-apps/drawing-spiral-triangle.md)
* [5.2. Цикли – изпитни задачи](Content/Chapter-5-2-loops-exam-problems/overview.md)
* [For цикли](Content/Chapter-5-2-loops-exam-problems/for-loops/for-loops.md)
- * [Изпитни задачи](Content/Chapter-5-2-loops-exam-problems/exam-problems/exam-problems.md)
- * [Задача: хистограма](Content/Chapter-5-2-loops-exam-problems/exam-problems/histogram/histogram.md)
+ * [Exam Problems](Content/Chapter-5-2-loops-exam-problems/exam-problems/exam-problems.md)
+ * [Problem: хистограма](Content/Chapter-5-2-loops-exam-problems/exam-problems/histogram/histogram.md)
* [Насоки и подсказки](Content/Chapter-5-2-loops-exam-problems/exam-problems/histogram/guidelines.md)
* [Прочитане на входните данни](Content/Chapter-5-2-loops-exam-problems/exam-problems/histogram/read-input-data.md)
* [Разпределяне числата по групи](Content/Chapter-5-2-loops-exam-problems/exam-problems/histogram/separate-numbers-in-groups.md)
* [Изчисляване на процентите](Content/Chapter-5-2-loops-exam-problems/exam-problems/histogram/calc-percentages.md)
* [Извеждане на краен резултат](Content/Chapter-5-2-loops-exam-problems/exam-problems/histogram/print-output.md)
- * [Задача: умната Лили](Content/Chapter-5-2-loops-exam-problems/exam-problems/smart-lily/smart-lily.md)
+ * [Problem: умната Лили](Content/Chapter-5-2-loops-exam-problems/exam-problems/smart-lily/smart-lily.md)
* [Прочитане на входните данни](Content/Chapter-5-2-loops-exam-problems/exam-problems/smart-lily/read-input-data.md)
* [Създаване на помощни променливи](Content/Chapter-5-2-loops-exam-problems/exam-problems/smart-lily/create-helper-variables.md)
* [Изчисляване на спестяванията](Content/Chapter-5-2-loops-exam-problems/exam-problems/smart-lily/calc-saved-money.md)
* [Форматиране и отпечатване на изходните данни](Content/Chapter-5-2-loops-exam-problems/exam-problems/smart-lily/format-and-print-output.md)
- * [Задача: завръщане в миналото](Content/Chapter-5-2-loops-exam-problems/exam-problems/back-to-the-past/back-to-the-past.md)
+ * [Problem: завръщане в миналото](Content/Chapter-5-2-loops-exam-problems/exam-problems/back-to-the-past/back-to-the-past.md)
* [Прочитане на входните данни](Content/Chapter-5-2-loops-exam-problems/exam-problems/back-to-the-past/process-input-data.md)
* [Обхождане на годините](Content/Chapter-5-2-loops-exam-problems/exam-problems/back-to-the-past/iterate-years.md)
* [Проверяване дали наследството е достатъчно и отпечатване на резултата](Content/Chapter-5-2-loops-exam-problems/exam-problems/back-to-the-past/check-heritage-and-print-output.md)
- * [Задача: болница](Content/Chapter-5-2-loops-exam-problems/exam-problems/hospital/hospital.md)
+ * [Problem: болница](Content/Chapter-5-2-loops-exam-problems/exam-problems/hospital/hospital.md)
* [Прочитане на входните данни](Content/Chapter-5-2-loops-exam-problems/exam-problems/hospital/process-input-data.md)
* [Изчисляване броя на излекувани и неизлекувани пациенти](Content/Chapter-5-2-loops-exam-problems/exam-problems/hospital/calc-treated-and-untreated-patients.md)
- * [Задача: деление без остатък](Content/Chapter-5-2-loops-exam-problems/exam-problems/division/division.md)
+ * [Problem: деление без остатък](Content/Chapter-5-2-loops-exam-problems/exam-problems/division/division.md)
* [Насоки и подсказки](Content/Chapter-5-2-loops-exam-problems/exam-problems/division/guidelines.md)
- * [Задача: логистика](Content/Chapter-5-2-loops-exam-problems/exam-problems/logistics/logistics.md)
+ * [Problem: логистика](Content/Chapter-5-2-loops-exam-problems/exam-problems/logistics/logistics.md)
* [Насоки и подсказки](Content/Chapter-5-2-loops-exam-problems/exam-problems/logistics/guidelines.md)
* [6.1. Вложени цикли](Content/Chapter-6-1-nested-loops/overview.md)
- * [Пример: правоъгълник от 10 x 10 звездички](Content/Chapter-6-1-nested-loops/example-triangle-10x10/example-triangle-10x10.md)
- * [Пример: правоъгълник от N x N звездички](Content/Chapter-6-1-nested-loops/example-triangle-NxN/example-triangle-NxN.md)
+ * [Example: правоъгълник от 10 x 10 звездички](Content/Chapter-6-1-nested-loops/example-triangle-10x10/example-triangle-10x10.md)
+ * [Example: правоъгълник от N x N звездички](Content/Chapter-6-1-nested-loops/example-triangle-NxN/example-triangle-NxN.md)
* [Вложени цикли](Content/Chapter-6-1-nested-loops/nested-loops/nested-loops.md)
* [Вложени цикли - пример](Content/Chapter-6-1-nested-loops/nested-loops/nested-loops-example.md)
- * [Пример: квадрат от звездички](Content/Chapter-6-1-nested-loops/nested-loops/example-square-of-stars.md)
- * [Пример: триъгълник от долари](Content/Chapter-6-1-nested-loops/nested-loops/example-triangle-of-dollars.md)
- * [Пример: квадратна рамка](Content/Chapter-6-1-nested-loops/nested-loops/example-square-frame.md)
- * [Пример: ромбче от звездички](Content/Chapter-6-1-nested-loops/nested-loops/example-rhombus-of-stars.md)
- * [Пример: коледна елха](Content/Chapter-6-1-nested-loops/nested-loops/example-christmas-tree.md)
+ * [Example: квадрат от звездички](Content/Chapter-6-1-nested-loops/nested-loops/example-square-of-stars.md)
+ * [Example: триъгълник от долари](Content/Chapter-6-1-nested-loops/nested-loops/example-triangle-of-dollars.md)
+ * [Example: квадратна рамка](Content/Chapter-6-1-nested-loops/nested-loops/example-square-frame.md)
+ * [Example: ромбче от звездички](Content/Chapter-6-1-nested-loops/nested-loops/example-rhombus-of-stars.md)
+ * [Example: коледна елха](Content/Chapter-6-1-nested-loops/nested-loops/example-christmas-tree.md)
* [Чертане на по-сложни фигури](Content/Chapter-6-1-nested-loops/drawing-more-complex-figures/drawing-more-complex-figures.md)
- * [Пример: слънчеви очила](Content/Chapter-6-1-nested-loops/drawing-more-complex-figures/sunglasses/sunglasses.md)
+ * [Example: слънчеви очила](Content/Chapter-6-1-nested-loops/drawing-more-complex-figures/sunglasses/sunglasses.md)
* [Отпечатване на горния и долния ред](Content/Chapter-6-1-nested-loops/drawing-more-complex-figures/sunglasses/print-top-and-bot-row.md)
* [Отпечатване на средните редове](Content/Chapter-6-1-nested-loops/drawing-more-complex-figures/sunglasses/print-middle-rows.md)
- * [Пример: къщичка](Content/Chapter-6-1-nested-loops/drawing-more-complex-figures/house/house.md)
+ * [Example: къщичка](Content/Chapter-6-1-nested-loops/drawing-more-complex-figures/house/house.md)
* [Насоки и подсказки](Content/Chapter-6-1-nested-loops/drawing-more-complex-figures/house/guidelines.md)
* [Прочитане на входните данни](Content/Chapter-6-1-nested-loops/drawing-more-complex-figures/house/read-input-data.md)
* [Изчисляване дължината на покрива](Content/Chapter-6-1-nested-loops/drawing-more-complex-figures/house/calc-roof-length.md)
* [Отпечатване на покрива](Content/Chapter-6-1-nested-loops/drawing-more-complex-figures/house/print-roof.md)
* [Отпечатване на основата](Content/Chapter-6-1-nested-loops/drawing-more-complex-figures/house/print-base.md)
- * [Пример: диамант](Content/Chapter-6-1-nested-loops/drawing-more-complex-figures/diamond/diamond.md)
+ * [Example: диамант](Content/Chapter-6-1-nested-loops/drawing-more-complex-figures/diamond/diamond.md)
* [Насоки и подсказки](Content/Chapter-6-1-nested-loops/drawing-more-complex-figures/diamond/guidelines.md)
* [Прочитане на входните данни и чертане на горната част на диаманта](Content/Chapter-6-1-nested-loops/drawing-more-complex-figures/diamond/read-input-data-and-print-top-part.md)
* [Чертане на долната част на диаманта](Content/Chapter-6-1-nested-loops/drawing-more-complex-figures/diamond/print-bot-part.md)
- * [Какво научихме от тази глава?](Content/Chapter-6-1-nested-loops/what-we-learned/what-we-learned.md)
- * [Упражнения: чертане на фигурки в уеб среда](Content/Chapter-6-1-nested-loops/exercise-drawing-figures-in-web-app/exercise-drawing-figures-in-web-app.md)
- * [Задача: рейтинги – визуализация в уеб среда](Content/Chapter-6-1-nested-loops/exercise-drawing-figures-in-web-app/ratings/ratings.md)
+ * [What We Learned in This Chapter?](Content/Chapter-6-1-nested-loops/what-we-learned/what-we-learned.md)
+ * [Exercises: чертане на фигурки в уеб среда](Content/Chapter-6-1-nested-loops/exercise-drawing-figures-in-web-app/exercise-drawing-figures-in-web-app.md)
+ * [Problem: рейтинги – визуализация в уеб среда](Content/Chapter-6-1-nested-loops/exercise-drawing-figures-in-web-app/ratings/ratings.md)
* [Създаване на нов C# проект](Content/Chapter-6-1-nested-loops/exercise-drawing-figures-in-web-app/ratings/create-new-project.md)
* [Създаване на уеб форма](Content/Chapter-6-1-nested-loops/exercise-drawing-figures-in-web-app/ratings/create-web-form.md)
* [Добавяне на DrawRatings метода](Content/Chapter-6-1-nested-loops/exercise-drawing-figures-in-web-app/ratings/drawratings-method.md)
* [Добавяне на картинките със звездичките](Content/Chapter-6-1-nested-loops/exercise-drawing-figures-in-web-app/ratings/add-star-images.md)
* [Стартиране на проекта](Content/Chapter-6-1-nested-loops/exercise-drawing-figures-in-web-app/ratings/start-project.md)
* [6.2. Вложени цикли – изпитни задачи](Content/Chapter-6-2-nested-loops-exam-problems/overview.md)
- * [Изпитни задачи](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/exam-problems.md)
- * [Задача: чертане на крепост](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/draw-fort/draw-fort.md)
+ * [Exam Problems](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/exam-problems.md)
+ * [Problem: чертане на крепост](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/draw-fort/draw-fort.md)
* [Прочитане на входните данни](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/draw-fort/read-input-data.md)
* [Изчисляване и отпечатване на покрива](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/draw-fort/calc-and-print-roof.md)
* [Отпечатване на тялото на замъка](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/draw-fort/print-body.md)
* [Отпечатване на основата на замъка](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/draw-fort/print-base.md)
- * [Задача: пеперуда](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/butterfly/butterfly.md)
+ * [Problem: пеперуда](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/butterfly/butterfly.md)
* [Прочитане на входните данни и отпечатване на горното крило](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/butterfly/read-input-data-and-print-top-wing.md)
* [Отпечатване на тялото и долното крило](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/butterfly/print-body-and-bot-wing.md)
- * [Задача: знак "Стоп"](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/stop/stop.md)
+ * [Problem: знак "Стоп"](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/stop/stop.md)
* [Прочитане на входните данни и отпечатване на началния ред](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/stop/read-input-and-print-start-row.md)
* [Отпечатване на горната част на знака](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/stop/print-top-part.md)
* [Отпечатване на средния ред и долната част на знака](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/stop/print-middle-row-and-bot-part.md)
- * [Задача: стрелка](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/arrow/arrow.md)
+ * [Problem: стрелка](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/arrow/arrow.md)
* [Прочитане на входните данни и отпечатване на началния ред](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/arrow/print-start-row.md)
* [Отпечатване на тялото и средния ред на стрелката](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/arrow/print-body-and-middle-row.md)
* [Отпечатване на долната част на стрелката](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/arrow/print-bot-part.md)
- * [Задача: брадва](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/axe/axe.md)
+ * [Problem: брадва](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/axe/axe.md)
* [Изчисляване броя на тиретата и отпечатване на горната част на брадвата](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/axe/calc-dashes-and-print-top-part.md)
* [Отпечатване на дръжката ](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/axe/print-handle.md)
* [Отпечатване на долната част на брадвата](Content/Chapter-6-2-nested-loops-exam-problems/exam-problems/axe/print-bot-part.md)
* [7.1. По-сложни цикли](Content/Chapter-7-1-complex-loops/overview.md)
* [Цикли със стъпка](Content/Chapter-7-1-complex-loops/loop-step/loop-step.md)
* [Какво представлява стъпката?](Content/Chapter-7-1-complex-loops/loop-step/loop-step-explanation.md)
- * [Пример: числата от 1 до N през 3](Content/Chapter-7-1-complex-loops/loop-step/example-numbers-1-to-n-with-step-3.md)
- * [Пример: числата от N до 1 в обратен ред](Content/Chapter-7-1-complex-loops/loop-step/example-numbers-n-to-1.md)
- * [Пример: числата от 1 до 2^n с for цикъл](Content/Chapter-7-1-complex-loops/loop-step/example-powers-of-two.md)
- * [Пример: четни степени на 2](Content/Chapter-7-1-complex-loops/loop-step/example-even-powers-of-two.md)
+ * [Example: числата от 1 до N през 3](Content/Chapter-7-1-complex-loops/loop-step/example-numbers-1-to-n-with-step-3.md)
+ * [Example: числата от N до 1 в обратен ред](Content/Chapter-7-1-complex-loops/loop-step/example-numbers-n-to-1.md)
+ * [Example: числата от 1 до 2^n с for цикъл](Content/Chapter-7-1-complex-loops/loop-step/example-powers-of-two.md)
+ * [Example: четни степени на 2](Content/Chapter-7-1-complex-loops/loop-step/example-even-powers-of-two.md)
* [While цикъл](Content/Chapter-7-1-complex-loops/while-loop/while-loop.md)
* [Какво представлява while цикълът?](Content/Chapter-7-1-complex-loops/while-loop/while-explained.md)
- * [Пример: редица числа 2k+1](Content/Chapter-7-1-complex-loops/while-loop/example-sequence-2k+1.md)
- * [Пример: число в диапазона 1 … 100](Content/Chapter-7-1-complex-loops/while-loop/example-numbers-1-to-100.md)
+ * [Example: редица числа 2k+1](Content/Chapter-7-1-complex-loops/while-loop/example-sequence-2k+1.md)
+ * [Example: число в диапазона 1 … 100](Content/Chapter-7-1-complex-loops/while-loop/example-numbers-1-to-100.md)
* [Най-голям общ делител (НОД)](Content/Chapter-7-1-complex-loops/greatest-common-divisor/greatest-common-divisor.md)
* [Алгоритъм на Евклид](Content/Chapter-7-1-complex-loops/greatest-common-divisor/euclidean-algorithm.md)
- * [Пример: най-голям общ делител (НОД)](Content/Chapter-7-1-complex-loops/greatest-common-divisor/example-gcd.md)
+ * [Example: най-голям общ делител (НОД)](Content/Chapter-7-1-complex-loops/greatest-common-divisor/example-gcd.md)
* [Do-while цикъл](Content/Chapter-7-1-complex-loops/do-while-loop/do-while-loop.md)
- * [Пример: изчисляване на факториел](Content/Chapter-7-1-complex-loops/do-while-loop/example-calc-factorial.md)
- * [Пример: сумиране на цифрите на число](Content/Chapter-7-1-complex-loops/do-while-loop/example-sum-digits.md)
+ * [Example: изчисляване на факториел](Content/Chapter-7-1-complex-loops/do-while-loop/example-calc-factorial.md)
+ * [Example: сумиране на цифрите на число](Content/Chapter-7-1-complex-loops/do-while-loop/example-sum-digits.md)
* [Безкрайни цикли и операторът break](Content/Chapter-7-1-complex-loops/infinite-loops/infinite-loops.md)
* [Безкраен цикъл. Що е то?](Content/Chapter-7-1-complex-loops/infinite-loops/infinite-loop-explained.md)
* [Оператор break](Content/Chapter-7-1-complex-loops/infinite-loops/operator-break.md)
- * [Пример: прости числа](Content/Chapter-7-1-complex-loops/infinite-loops/example-prime-numbers/example-prime-numbers-explanation.md)
- * [Пример: проверка за просто число. Оператор break](Content/Chapter-7-1-complex-loops/infinite-loops/example-prime-numbers/check-prime.md)
+ * [Example: прости числа](Content/Chapter-7-1-complex-loops/infinite-loops/example-prime-numbers/example-prime-numbers-explanation.md)
+ * [Example: проверка за просто число. Оператор break](Content/Chapter-7-1-complex-loops/infinite-loops/example-prime-numbers/check-prime.md)
* [Имплементация на алгоритъма](Content/Chapter-7-1-complex-loops/infinite-loops/example-prime-numbers/check-prime-implementation.md)
- * [Пример: оператор break в безкраен цикъл](Content/Chapter-7-1-complex-loops/infinite-loops/example-break-in-infinite-loop/break-in-infinite-loop.md)
+ * [Example: оператор break в безкраен цикъл](Content/Chapter-7-1-complex-loops/infinite-loops/example-break-in-infinite-loop/break-in-infinite-loop.md)
* [Имплементация на алгоритъма](Content/Chapter-7-1-complex-loops/infinite-loops/example-break-in-infinite-loop/break-in-infinite-loop-implementation.md)
* [Вложени цикли и операторът break](Content/Chapter-7-1-complex-loops/nested-loops-and-break/nested-loops-and-break.md)
* [Грешна имплементация](Content/Chapter-7-1-complex-loops/nested-loops-and-break/wrong-implementation.md)
@@ -441,20 +441,20 @@
* [Справяне с грешни данни: try-catch](Content/Chapter-7-1-complex-loops/try-catch/try-catch.md)
* [Какво е try-catch?](Content/Chapter-7-1-complex-loops/try-catch/what-is-try-catch.md)
* [Конструкция на try-catch](Content/Chapter-7-1-complex-loops/try-catch/try-catch-construction.md)
- * [Пример: справяне с грешни числа чрез try-catch](Content/Chapter-7-1-complex-loops/try-catch/example-dealing-with-invalid-numbers/example-dealing-with-invalid-numbers.md)
+ * [Example: справяне с грешни числа чрез try-catch](Content/Chapter-7-1-complex-loops/try-catch/example-dealing-with-invalid-numbers/example-dealing-with-invalid-numbers.md)
* [Имплементация на идеята](Content/Chapter-7-1-complex-loops/try-catch/example-dealing-with-invalid-numbers/implementation.md)
* [Задачи с цикли](Content/Chapter-7-1-complex-loops/exercises-with-loops/exercises-with-loops.md)
- * [Задача: числа на Фибоначи](Content/Chapter-7-1-complex-loops/exercises-with-loops/fibonacci-numbers/fibonacci-numbers.md)
+ * [Problem: числа на Фибоначи](Content/Chapter-7-1-complex-loops/exercises-with-loops/fibonacci-numbers/fibonacci-numbers.md)
* [Насоки и подсказки](Content/Chapter-7-1-complex-loops/exercises-with-loops/fibonacci-numbers/guidelines.md)
- * [Задача: пирамида от числа](Content/Chapter-7-1-complex-loops/exercises-with-loops/number-pyramid/number-pyramid.md)
+ * [Problem: пирамида от числа](Content/Chapter-7-1-complex-loops/exercises-with-loops/number-pyramid/number-pyramid.md)
* [Насоки и подсказки](Content/Chapter-7-1-complex-loops/exercises-with-loops/number-pyramid/guidelines.md)
* [Имплементация на идеята](Content/Chapter-7-1-complex-loops/exercises-with-loops/number-pyramid/implementation.md)
- * [Задача: таблица с числа](Content/Chapter-7-1-complex-loops/exercises-with-loops/number-table/number-table.md)
+ * [Problem: таблица с числа](Content/Chapter-7-1-complex-loops/exercises-with-loops/number-table/number-table.md)
* [Насоки и подсказки](Content/Chapter-7-1-complex-loops/exercises-with-loops/number-table/guidelines.md)
* [Имплементация на идеята](Content/Chapter-7-1-complex-loops/exercises-with-loops/number-table/implementation.md)
- * [Какво научихме от тази глава?](Content/Chapter-7-1-complex-loops/what-we-learned/what-we-learned.md)
- * [Упражнения: уеб приложения с по-сложни цикли](Content/Chapter-7-1-complex-loops/web-app/web-apps-with-complex-loops.md)
- * [Задача: уеб игра „Обстреляй плодовете!“](Content/Chapter-7-1-complex-loops/web-app/web-app-fruits.md)
+ * [What We Learned in This Chapter?](Content/Chapter-7-1-complex-loops/what-we-learned/what-we-learned.md)
+ * [Exercises: уеб приложения с по-сложни цикли](Content/Chapter-7-1-complex-loops/web-app/web-apps-with-complex-loops.md)
+ * [Problem: уеб игра „Обстреляй плодовете!“](Content/Chapter-7-1-complex-loops/web-app/web-app-fruits.md)
* [Създаване на нов C# проект](Content/Chapter-7-1-complex-loops/web-app/create-new-project.md)
* [Създаване на контролите за игра](Content/Chapter-7-1-complex-loops/web-app/create-controls.md)
* [Подготовяне на плодовете за визуализация](Content/Chapter-7-1-complex-loops/web-app/prepare-fruits-for-the-view.md)
@@ -469,77 +469,77 @@
* [Имплементиране края на играта](Content/Chapter-7-1-complex-loops/web-app/implement-gameover.md)
* [Финално тестване на приложението](Content/Chapter-7-1-complex-loops/web-app/test-the-app-final.md)
* [7.2. По-сложни цикли – изпитни задачи](Content/Chapter-7-2-complex-loops-exam-problems/overview.md)
- * [Изпитни задачи](Content/Chapter-7-2-complex-loops-exam-problems/exam-problems/exam-problems.md)
- * [Задача: генератор за тъпи пароли](Content/Chapter-7-2-complex-loops-exam-problems/stupid-password-generator/stupid-password-generator.md)
+ * [Exam Problems](Content/Chapter-7-2-complex-loops-exam-problems/exam-problems/exam-problems.md)
+ * [Problem: генератор за тъпи пароли](Content/Chapter-7-2-complex-loops-exam-problems/stupid-password-generator/stupid-password-generator.md)
* [Насоки и подсказки](Content/Chapter-7-2-complex-loops-exam-problems/stupid-password-generator/guidelines.md)
* [Прочитане и обработка на входните данни](Content/Chapter-7-2-complex-loops-exam-problems/stupid-password-generator/read-input-data.md)
* [Обработване и извеждане на резултат](Content/Chapter-7-2-complex-loops-exam-problems/stupid-password-generator/process-and-print-output.md)
* [Знаете ли, че…?](Content/Chapter-7-2-complex-loops-exam-problems/stupid-password-generator/do-you-know.md)
- * [Задача: магически числа](Content/Chapter-7-2-complex-loops-exam-problems/magic-combination/magic-combination.md)
+ * [Problem: магически числа](Content/Chapter-7-2-complex-loops-exam-problems/magic-combination/magic-combination.md)
* [Решение с for цикъл](Content/Chapter-7-2-complex-loops-exam-problems/magic-combination/for-loop-solution.md)
* [Решение с while цикъл](Content/Chapter-7-2-complex-loops-exam-problems/magic-combination/while-loop-solution/while-loop-solution.md)
* [Разписване на while цикъла](Content/Chapter-7-2-complex-loops-exam-problems/magic-combination/while-loop-solution/writing-while-loop.md)
* [Използване на безкраен while цикъл](Content/Chapter-7-2-complex-loops-exam-problems/magic-combination/while-loop-solution/infinite-while-loop.md)
- * [Задача: спиращо число](Content/Chapter-7-2-complex-loops-exam-problems/stop-number/stop-number.md)
+ * [Problem: спиращо число](Content/Chapter-7-2-complex-loops-exam-problems/stop-number/stop-number.md)
* [Насоки и подсказки](Content/Chapter-7-2-complex-loops-exam-problems/stop-number/guidelines.md)
- * [Задача: специални числа](Content/Chapter-7-2-complex-loops-exam-problems/special-numbers/special-numbers.md)
+ * [Problem: специални числа](Content/Chapter-7-2-complex-loops-exam-problems/special-numbers/special-numbers.md)
* [Насоки и подсказки](Content/Chapter-7-2-complex-loops-exam-problems/special-numbers/guidelines.md)
- * [Задача: цифри](Content/Chapter-7-2-complex-loops-exam-problems/digits/digits.md)
+ * [Problem: цифри](Content/Chapter-7-2-complex-loops-exam-problems/digits/digits.md)
* [Насоки и подсказки](Content/Chapter-7-2-complex-loops-exam-problems/digits/guidelines.md)
* [8.1. Подготовка за практически изпит – част I](Content/Chapter-8-1-exam-preparation/overview.md)
* [Практически изпит по “Основи на програмирането”](Content/Chapter-8-1-exam-preparation/practical-exam/practical-exam.md)
* [Система за онлайн оценяване (Judge)](Content/Chapter-8-1-exam-preparation/online-evaluation-system/online-evaluation-system.md)
* [Задачи с прости пресмятания](Content/Chapter-8-1-exam-preparation/simple-calculations-problems/simple-calc-problems.md)
- * [Задача: лице на триъгълник в равнината](Content/Chapter-8-1-exam-preparation/simple-calculations-problems/triangle-area/triangle-area.md)
+ * [Problem: лице на триъгълник в равнината](Content/Chapter-8-1-exam-preparation/simple-calculations-problems/triangle-area/triangle-area.md)
* [Прочитане на входните данни](Content/Chapter-8-1-exam-preparation/simple-calculations-problems/triangle-area/read-input-data.md)
* [Изчисляване страната и височината на триъгълника](Content/Chapter-8-1-exam-preparation/simple-calculations-problems/triangle-area/calc-triangle-height-and-side.md)
* [Изчисляване и отпечатване лицето на триъгълника](Content/Chapter-8-1-exam-preparation/simple-calculations-problems/triangle-area/calc-and-print-triangle-area.md)
- * [Задача: пренасяне на тухли](Content/Chapter-8-1-exam-preparation/simple-calculations-problems/bricks/bricks.md)
+ * [Problem: пренасяне на тухли](Content/Chapter-8-1-exam-preparation/simple-calculations-problems/bricks/bricks.md)
* [Прочитане на входните данни и изчисляване броя тухли за един курс](Content/Chapter-8-1-exam-preparation/simple-calculations-problems/bricks/read-input-data-and-calc-bricks-per-course.md)
* [Изчисляване и отпечатване на общия брой курсове](Content/Chapter-8-1-exam-preparation/simple-calculations-problems/bricks/calc-and-print-needed-courses.md)
* [Задачи с единична проверка](Content/Chapter-8-1-exam-preparation/simple-conditions-problems/simple-conditions-problems.md)
- * [Задача: точка върху отсечка](Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-in-figure/point-in-figure.md)
+ * [Problem: точка върху отсечка](Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-in-figure/point-in-figure.md)
* [Прочитане на входните данни и изчисляване на разстоянието до най-близкич край на отсечката](Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-on-segment/read-input-data-and-calc-min-distance.md)
* [Определяне дали точката е на линията или извън нея и отпечатване на резултатите](Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-on-segment/determining-if-point-is-in-or-out-and-print-result.md)
- * [Задача: точка във фигура](Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-in-figure/point-in-figure.md)
+ * [Problem: точка във фигура](Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-in-figure/point-in-figure.md)
* [Насоки и подсказки](Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-in-figure/guidelines.md)
* [Определяне местоположението на точката](Content/Chapter-8-1-exam-preparation/simple-conditions-problems/point-in-figure/determining-point-location.md)
* [Задачи с по-сложни проверки](Content/Chapter-8-1-exam-preparation/complex-conditions-problems/complex-conditions-problems.md)
- * [Задача: дата след 5 дни](Content/Chapter-8-1-exam-preparation/complex-conditions-problems/date-after-5-days/date-after-5-days.md)
+ * [Problem: дата след 5 дни](Content/Chapter-8-1-exam-preparation/complex-conditions-problems/date-after-5-days/date-after-5-days.md)
* [Прочитане и обработване на входните данни](Content/Chapter-8-1-exam-preparation/complex-conditions-problems/date-after-5-days/read-and-process-input-data.md)
* [Прибавяне на 5 дни](Content/Chapter-8-1-exam-preparation/complex-conditions-problems/date-after-5-days/add-5-days.md)
* [Отпечатване на резултата](Content/Chapter-8-1-exam-preparation/complex-conditions-problems/date-after-5-days/print-output.md)
- * [Задача: суми от 3 числа](Content/Chapter-8-1-exam-preparation/complex-conditions-problems/sum-3-numbers/sum-3-numbers.md)
+ * [Problem: суми от 3 числа](Content/Chapter-8-1-exam-preparation/complex-conditions-problems/sum-3-numbers/sum-3-numbers.md)
* [Прочитане на входните данни и съставяне на рамка за решението](Content/Chapter-8-1-exam-preparation/complex-conditions-problems/sum-3-numbers/read-input-data-and-composition-frame-for-the-solution.md)
* [Попълване на рамката с код](Content/Chapter-8-1-exam-preparation/complex-conditions-problems/sum-3-numbers/write-code-in-the-frame.md)
* [Задачи с единичен цикъл](Content/Chapter-8-1-exam-preparation/simple-loops-problems/simple-loops-problems.md)
- * [Задача: суми през 3](Content/Chapter-8-1-exam-preparation/simple-loops-problems/sum-step-3/sum-step-3.md)
+ * [Problem: суми през 3](Content/Chapter-8-1-exam-preparation/simple-loops-problems/sum-step-3/sum-step-3.md)
* [Прочитане на входните данни](Content/Chapter-8-1-exam-preparation/simple-loops-problems/sum-step-3/read-input-data.md)
* [Разпределяне на числата и отпечатване на резултите](Content/Chapter-8-1-exam-preparation/simple-loops-problems/sum-step-3/allocating-numbers-and-print-results.md)
- * [Задача: поредица от нарастващи елементи](Content/Chapter-8-1-exam-preparation/simple-loops-problems/increasing-elements/increasing-elements.md)
+ * [Problem: поредица от нарастващи елементи](Content/Chapter-8-1-exam-preparation/simple-loops-problems/increasing-elements/increasing-elements.md)
* [Прочитане на входните данни и съставяне на допълнителни променливи](Content/Chapter-8-1-exam-preparation/simple-loops-problems/increasing-elements/read-input-data-and-create-additional-variables.md)
* [Определяне на нарастваща редица](Content/Chapter-8-1-exam-preparation/simple-loops-problems/increasing-elements/determining-increasing-sequence.md)
* [Намиране на най-дългата редица и отпечатване на резултата](Content/Chapter-8-1-exam-preparation/simple-loops-problems/increasing-elements/find-and-print-longest-sequence.md)
* [Задачи за чертане на фигурки на конзолата](Content/Chapter-8-1-exam-preparation/drawing-figures-problems/drawing-figures-problems.md)
- * [Задача: перфектен диамант](Content/Chapter-8-1-exam-preparation/drawing-figures-problems/perfect-diamond/perfect-diamond.md)
+ * [Problem: перфектен диамант](Content/Chapter-8-1-exam-preparation/drawing-figures-problems/perfect-diamond/perfect-diamond.md)
* [Насоки и прочитане на входните данни](Content/Chapter-8-1-exam-preparation/drawing-figures-problems/perfect-diamond/guidelines-and-read-input-data.md)
* [Отпечатване на горната половина на диаманта](Content/Chapter-8-1-exam-preparation/drawing-figures-problems/perfect-diamond/print-top-part.md)
* [Отпечатване на долната част на диаманта](Content/Chapter-8-1-exam-preparation/drawing-figures-problems/perfect-diamond/print-bot-part.md)
- * [Задача: правоъгълник със звездички в центъра](Content/Chapter-8-1-exam-preparation/drawing-figures-problems/rectangle-with-stars/rectangle-with-stars.md)
+ * [Problem: правоъгълник със звездички в центъра](Content/Chapter-8-1-exam-preparation/drawing-figures-problems/rectangle-with-stars/rectangle-with-stars.md)
* [Прочитане на входните данни и отпечатване на първия и последния ред](Content/Chapter-8-1-exam-preparation/drawing-figures-problems/rectangle-with-stars/read-input-data-and-print-first-and-last-rows.md)
* [Отпечатване на средните редове](Content/Chapter-8-1-exam-preparation/drawing-figures-problems/rectangle-with-stars/print-middle-rows.md)
* [Добавяне на звездичките в центъра на правоъгълника](Content/Chapter-8-1-exam-preparation/drawing-figures-problems/rectangle-with-stars/adding-stars-in-the-center.md)
* [Задачи с вложени цикли с по-сложна логика](Content/Chapter-8-1-exam-preparation/nested-loops-problems/nested-loops-problems.md)
- * [Задача: четворки нарастващи числа](Content/Chapter-8-1-exam-preparation/nested-loops-problems/increasing-4-numbers/increasing-4-numbers.md)
+ * [Problem: четворки нарастващи числа](Content/Chapter-8-1-exam-preparation/nested-loops-problems/increasing-4-numbers/increasing-4-numbers.md)
* [Прочитане на входните данни](Content/Chapter-8-1-exam-preparation/nested-loops-problems/increasing-4-numbers/read-input-data.md)
* [Реализация за редица от две числа](Content/Chapter-8-1-exam-preparation/nested-loops-problems/increasing-4-numbers/implementation-with-2-numbers.md)
* [Реализация за редица от четири числа](Content/Chapter-8-1-exam-preparation/nested-loops-problems/increasing-4-numbers/implementation-with-4-numbers.md)
- * [Задача: генериране на правоъгълници](Content/Chapter-8-1-exam-preparation/nested-loops-problems/generate-rectangles/generate-rectangles.md)
+ * [Problem: генериране на правоъгълници](Content/Chapter-8-1-exam-preparation/nested-loops-problems/generate-rectangles/generate-rectangles.md)
* [Прочитане на входните данни и излагане на примерна идея за решение](Content/Chapter-8-1-exam-preparation/nested-loops-problems/generate-rectangles/read-input-data-and-sample-idea-for-solution.md)
* [Изчисляване на лицето на правоъгълниците и отпечатване на резултата](Content/Chapter-8-1-exam-preparation/nested-loops-problems/generate-rectangles/calc-rectangle-area-and-print-output.md)
* [8.2. Подготовка за практически изпит – част II](Content/Chapter-8-2-exam-preparation-part-2/overview.md)
- * [Изпитни задачи](Content/Chapter-8-2-exam-preparation-part-2/exam-problems/exam-problems.md)
- * [Задача: разстояние](Content/Chapter-8-2-exam-preparation-part-2/distance/distance.md)
+ * [Exam Problems](Content/Chapter-8-2-exam-preparation-part-2/exam-problems/exam-problems.md)
+ * [Problem: разстояние](Content/Chapter-8-2-exam-preparation-part-2/distance/distance.md)
* [Насоки и подсказки](Content/Chapter-8-2-exam-preparation-part-2/distance/guidelines.md)
* [Прочитане на входните данни](Content/Chapter-8-2-exam-preparation-part-2/distance/read-input-data.md)
* [Преобразуване на входните данни в подходящи типове](Content/Chapter-8-2-exam-preparation-part-2/distance/converting-input-data-into-appropriate-types.md)
@@ -547,37 +547,37 @@
* [Избор на тип за изчисленията](Content/Chapter-8-2-exam-preparation-part-2/distance/type-for-calculations.md)
* [Изчисляване на изминатото разстояние](Content/Chapter-8-2-exam-preparation-part-2/distance/calc-travel-distance.md)
* [Изчисляване и отпечатване на крайния резултат](Content/Chapter-8-2-exam-preparation-part-2/distance/calc-and-print-final-result.md)
- * [Задача: смяна на плочки](Content/Chapter-8-2-exam-preparation-part-2/change-tiles/change-tiles.md)
+ * [Problem: смяна на плочки](Content/Chapter-8-2-exam-preparation-part-2/change-tiles/change-tiles.md)
* [Насоки и подсказки](Content/Chapter-8-2-exam-preparation-part-2/change-tiles/guidelines.md)
- * [Задача: магазин за цветя](Content/Chapter-8-2-exam-preparation-part-2/flowers/flowers.md)
+ * [Problem: магазин за цветя](Content/Chapter-8-2-exam-preparation-part-2/flowers/flowers.md)
* [Отделяне на константните стойности в променливи](Content/Chapter-8-2-exam-preparation-part-2/flowers/constant-values-variables.md)
* [Прочитане на входните данни](Content/Chapter-8-2-exam-preparation-part-2/flowers/read-input-data.md)
* [Съставяне на програмната логика](Content/Chapter-8-2-exam-preparation-part-2/flowers/program-logic.md)
- * [Задача: оценки](Content/Chapter-8-2-exam-preparation-part-2/grades/grades.md)
+ * [Problem: оценки](Content/Chapter-8-2-exam-preparation-part-2/grades/grades.md)
* [Прочитане на входните данни и създаване на помощни променливи](Content/Chapter-8-2-exam-preparation-part-2/grades/read-input-data-and-create-helper-variables.md)
* [Разпределяне студентите по групи](Content/Chapter-8-2-exam-preparation-part-2/grades/allocationg-students-in-groups.md)
- * [Задача: коледна шапка](Content/Chapter-8-2-exam-preparation-part-2/christmas-hat/christmas-hat.md)
+ * [Problem: коледна шапка](Content/Chapter-8-2-exam-preparation-part-2/christmas-hat/christmas-hat.md)
* [Анализ на задачата](Content/Chapter-8-2-exam-preparation-part-2/christmas-hat/problem-analytics.md)
* [Насоки за начертаване на динамичната част от фигурката](Content/Chapter-8-2-exam-preparation-part-2/christmas-hat/guidelines-for-dynamic-part-of-the-figure.md)
- * [Задача: комбинации от букви](Content/Chapter-8-2-exam-preparation-part-2/letters-combinations/letters-combinations.md)
+ * [Problem: комбинации от букви](Content/Chapter-8-2-exam-preparation-part-2/letters-combinations/letters-combinations.md)
* [Прочитане на входните данни](Content/Chapter-8-2-exam-preparation-part-2/letters-combinations/read-input-data.md)
* [Отпечатване на всички от началния до крайния символ](Content/Chapter-8-2-exam-preparation-part-2/letters-combinations/printing-symbols-from-start-to-end-symbol.md)
* [Отпечатване на комбинации от три символа](Content/Chapter-8-2-exam-preparation-part-2/letters-combinations/printing-3-symbols.md)
* [9.1. Задачи за шампиони – част I](Content/Chapter-9-1-problems-for-champions/overview.md)
* [По-сложни задачи върху изучавания материал](Content/Chapter-9-1-problems-for-champions/complex-problems/complex-problems.md)
- * [Задача: пресичащи се редици](Content/Chapter-9-1-problems-for-champions/crossing-sequences/crossing-sequences.md)
+ * [Problem: пресичащи се редици](Content/Chapter-9-1-problems-for-champions/crossing-sequences/crossing-sequences.md)
* [Пример](Content/Chapter-9-1-problems-for-champions/crossing-sequences/example.md)
* [Насоки, подсказки и обработване на входните данни](Content/Chapter-9-1-problems-for-champions/crossing-sequences/guidelines-and-process-input.md)
* [Генериране на редица на Трибоначи](Content/Chapter-9-1-problems-for-champions/crossing-sequences/generate-tribonacci-sequence.md)
* [Генериране на числова спирала](Content/Chapter-9-1-problems-for-champions/crossing-sequences/generate-numerical-spiral.md)
* [Намиране на общо число за двете редици](Content/Chapter-9-1-problems-for-champions/crossing-sequences/finding-common-number-for-the-sequences.md)
* [Алтернативно решение](Content/Chapter-9-1-problems-for-champions/crossing-sequences/alternative-solution.md)
- * [Задача: магически дати](Content/Chapter-9-1-problems-for-champions/magic-dates/magic-dates.md)
+ * [Problem: магически дати](Content/Chapter-9-1-problems-for-champions/magic-dates/magic-dates.md)
* [Насоки и подсказки](Content/Chapter-9-1-problems-for-champions/magic-dates/guidelines.md)
* [Обхождане на всички дати](Content/Chapter-9-1-problems-for-champions/magic-dates/loop-through-dates.md)
* [Пресмятане на теглото](Content/Chapter-9-1-problems-for-champions/magic-dates/calc-date-weight.md)
* [Отпечатване на изхода](Content/Chapter-9-1-problems-for-champions/magic-dates/print-results.md)
- * [Задача: пет специални букви](Content/Chapter-9-1-problems-for-champions/five-special-letters/five-special-letters.md)
+ * [Problem: пет специални букви](Content/Chapter-9-1-problems-for-champions/five-special-letters/five-special-letters.md)
* [Прочитане на входните данни](Content/Chapter-9-1-problems-for-champions/five-special-letters/read-input-data.md)
* [Генериране на всички комбинации](Content/Chapter-9-1-problems-for-champions/five-special-letters/generate-combinations.md)
* [Премахването на повтарящи се букви](Content/Chapter-9-1-problems-for-champions/five-special-letters/remove-repetitive-letters.md)
@@ -586,13 +586,13 @@
* [Финални щрихи](Content/Chapter-9-1-problems-for-champions/five-special-letters/print-output.md)
* [9.2. Задачи за шампиони – част II](Content/Chapter-9-2-problems-for-champions-part-2/overview.md)
* [По-сложни задачи върху изучавания материал](Content/Chapter-9-2-problems-for-champions-part-2/complex-problems/complex-problems.md)
- * [Задача: дни за страстно пазаруване](Content/Chapter-9-2-problems-for-champions-part-2/passion-days/passion-days.md)
+ * [Problem: дни за страстно пазаруване](Content/Chapter-9-2-problems-for-champions-part-2/passion-days/passion-days.md)
* [Насоки и подсказки](Content/Chapter-9-2-problems-for-champions-part-2/passion-days/guidelines.md)
* [Обработване на входа](Content/Chapter-9-2-problems-for-champions-part-2/passion-days/process-input-data.md)
* [Четене на командите](Content/Chapter-9-2-problems-for-champions-part-2/passion-days/read-commands.md)
* [Обработване на символите от командите](Content/Chapter-9-2-problems-for-champions-part-2/passion-days/process-command-symbols.md)
* [Форматиране на изхода](Content/Chapter-9-2-problems-for-champions-part-2/passion-days/format-output.md)
- * [Задача: числен израз](Content/Chapter-9-2-problems-for-champions-part-2/expression/expression.md)
+ * [Problem: числен израз](Content/Chapter-9-2-problems-for-champions-part-2/expression/expression.md)
* [Пример](Content/Chapter-9-2-problems-for-champions-part-2/expression/example.md)
* [Насоки, подсказки и прочитане на входните данни](Content/Chapter-9-2-problems-for-champions-part-2/expression/guidelines-and-process-input.md)
* [Създаване на помощни променливи](Content/Chapter-9-2-problems-for-champions-part-2/expression/helper-variables.md)
@@ -600,7 +600,7 @@
* [Реализация на описаната идея](Content/Chapter-9-2-problems-for-champions-part-2/expression/implementing-the-structure.md)
* [Пресмятане стойността на подизраза](Content/Chapter-9-2-problems-for-champions-part-2/expression/calc-subexpression.md)
* [Форматиране на изхода](Content/Chapter-9-2-problems-for-champions-part-2/expression/format-output.md)
- * [Задача: бикове и крави](Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/bulls-and-cows.md)
+ * [Problem: бикове и крави](Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/bulls-and-cows.md)
* [Насоки и подсказки](Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/guidelines.md)
* [Прочитане на входните данни](Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/read-input-data.md)
* [Деклариране на флаг](Content/Chapter-9-2-problems-for-champions-part-2/bulls-and-cows/declare-flag.md)
@@ -615,22 +615,22 @@
* [Защо да използваме методи?](Content/Chapter-10-methods/what-method-is/why-to-use-methods.md)
* [Деклариране на методи](Content/Chapter-10-methods/what-method-is/method-declaration.md)
* [Извикване на методи](Content/Chapter-10-methods/what-method-is/calling-methods.md)
- * [Пример: празна касова бележка](Content/Chapter-10-methods/what-method-is/example-blank-recepit/blank-recepit.md)
+ * [Example: празна касова бележка](Content/Chapter-10-methods/what-method-is/example-blank-recepit/blank-recepit.md)
* [Насоки и подсказки](Content/Chapter-10-methods/what-method-is/example-blank-recepit/guidelines.md)
* [Методи с параметри](Content/Chapter-10-methods/methods-with-parameters/method-with-params.md)
* [Използване на параметри в методите](Content/Chapter-10-methods/methods-with-parameters/using-params.md)
- * [Пример: знак на цяло число](Content/Chapter-10-methods/methods-with-parameters/example-sign-of-int-number.md)
+ * [Example: знак на цяло число](Content/Chapter-10-methods/methods-with-parameters/example-sign-of-int-number.md)
* [Незадължителни параметри](Content/Chapter-10-methods/methods-with-parameters/optional-params.md)
- * [Пример: принтиране на триъгълник](Content/Chapter-10-methods/methods-with-parameters/example-printing-triangle.md)
- * [Пример: рисуване на запълнен квадрат](Content/Chapter-10-methods/methods-with-parameters/example-draw-a-filled-square.md)
+ * [Example: принтиране на триъгълник](Content/Chapter-10-methods/methods-with-parameters/example-printing-triangle.md)
+ * [Example: рисуване на запълнен квадрат](Content/Chapter-10-methods/methods-with-parameters/example-draw-a-filled-square.md)
* [Връщане на резултат от метод](Content/Chapter-10-methods/return-result-from-method/return-result-from-method.md)
* [Типове на връщаната от метода стойност](Content/Chapter-10-methods/return-result-from-method/return-value-types.md)
* [Оператор return](Content/Chapter-10-methods/return-result-from-method/operator-return/operator-return.md)
* [Оператор return - пример](Content/Chapter-10-methods/return-result-from-method/operator-return/operator-return-example.md)
* [Кодът след return е недостъпен](Content/Chapter-10-methods/return-result-from-method/operator-return/the-code-after-return-is-inaccessible.md)
* [Употреба на връщаната от метода стойност](Content/Chapter-10-methods/return-result-from-method/usage-of-returned-value.md)
- * [Пример: пресмятане на лицето на триъгълник](Content/Chapter-10-methods/return-result-from-method/example-calc-triangle-area.md)
- * [Пример: степен на число](Content/Chapter-10-methods/return-result-from-method/example-math-power.md)
+ * [Example: пресмятане на лицето на триъгълник](Content/Chapter-10-methods/return-result-from-method/example-calc-triangle-area.md)
+ * [Example: степен на число](Content/Chapter-10-methods/return-result-from-method/example-math-power.md)
* [Методи, връщащи няколко стойности](Content/Chapter-10-methods/return-result-from-method/methods-returning-multiple-values/methods-returning-multiple-values.md)
* [Деклариране на ValueTuple](Content/Chapter-10-methods/return-result-from-method/methods-returning-multiple-values/declaring-valuetuple.md)
* [Метод, връщащ няколко стойности](Content/Chapter-10-methods/return-result-from-method/methods-returning-multiple-values/method-returning-multiple-values.md)
@@ -638,7 +638,7 @@
* [Сигнатура на метода](Content/Chapter-10-methods/methods-overloading/method-signature.md)
* [Варианти на методи](Content/Chapter-10-methods/methods-overloading/method-overloading.md)
* [Сигнатура и тип на връщаната стойност](Content/Chapter-10-methods/methods-overloading/signature-and-return-value-type.md)
- * [Пример: по-голямата от две стойности](Content/Chapter-10-methods/methods-overloading/example-greater-of-two-values/example-greater-of-two-values.md)
+ * [Example: по-голямата от две стойности](Content/Chapter-10-methods/methods-overloading/example-greater-of-two-values/example-greater-of-two-values.md)
* [Създаване на методите](Content/Chapter-10-methods/methods-overloading/example-greater-of-two-values/create-three-overloaded-methods.md)
* [Прочитане на входните данни и използване на методите](Content/Chapter-10-methods/methods-overloading/example-greater-of-two-values/read-input-data-and-use-methods.md)
* [Вложени методи (локални функции)](Content/Chapter-10-methods/nested-methods/nested-methods.md)
@@ -650,17 +650,17 @@
* [Именуване на параметрите на методите](Content/Chapter-10-methods/methods-naming-good-practices/method-params-naming.md)
* [Добри практики при работа с методи](Content/Chapter-10-methods/methods-naming-good-practices/working-with-methods-good-practices.md)
* [Структура и форматиране на кода](Content/Chapter-10-methods/methods-naming-good-practices/code-structure-and-formatting.md)
- * [Какво научихме от тази глава?](Content/Chapter-10-methods/what-we-learned/what-we-learned.md)
+ * [What We Learned in This Chapter?](Content/Chapter-10-methods/what-we-learned/what-we-learned.md)
* [Упражнения](Content/Chapter-10-methods/exercises-methods/exercieses-methods.md)
- * [Задача: "Hello, Име!"](Content/Chapter-10-methods/exercises-methods/hello-name.md)
- * [Задача: по-малко число](Content/Chapter-10-methods/exercises-methods/min-method.md)
- * [Задача: повтаряне на низ](Content/Chapter-10-methods/exercises-methods/string-repeater.md)
- * [Задача: n-та цифра](Content/Chapter-10-methods/exercises-methods/nth-digit.md)
- * [Задача: число към бройна система](Content/Chapter-10-methods/exercises-methods/integer-to-base.md)
- * [Задача: известия](Content/Chapter-10-methods/exercises-methods/notifications.md)
- * [Задача: числа към думи](Content/Chapter-10-methods/exercises-methods/numbers-to-words/numbers-to-words.md)
+ * [Problem: "Hello, Име!"](Content/Chapter-10-methods/exercises-methods/hello-name.md)
+ * [Problem: по-малко число](Content/Chapter-10-methods/exercises-methods/min-method.md)
+ * [Problem: повтаряне на низ](Content/Chapter-10-methods/exercises-methods/string-repeater.md)
+ * [Problem: n-та цифра](Content/Chapter-10-methods/exercises-methods/nth-digit.md)
+ * [Problem: число към бройна система](Content/Chapter-10-methods/exercises-methods/integer-to-base.md)
+ * [Problem: известия](Content/Chapter-10-methods/exercises-methods/notifications.md)
+ * [Problem: числа към думи](Content/Chapter-10-methods/exercises-methods/numbers-to-words/numbers-to-words.md)
* [Насоки и подсказки](Content/Chapter-10-methods/exercises-methods/numbers-to-words/guidelines.md)
- * [Задача: криптиране на низ](Content/Chapter-10-methods/exercises-methods/string-encryption/string-encryption.md)
+ * [Problem: криптиране на низ](Content/Chapter-10-methods/exercises-methods/string-encryption/string-encryption.md)
* [Насоки и подсказки](Content/Chapter-10-methods/exercises-methods/string-encryption/guidelines.md)
* [11. Хитрости и хакове](Content/Chapter-11-tricks-and-hacks/overview.md)
* [Форматиране на кода](Content/Chapter-11-tricks-and-hacks/code-formatting/code-formatting.md)
@@ -686,7 +686,7 @@
* [Закръгляне чрез placeholder](Content/Chapter-11-tricks-and-hacks/tricks/rounding-with-placeholder.md)
* [Как се пише условна конструкция?](Content/Chapter-11-tricks-and-hacks/tricks/how-to-write-if-construction.md)
* [Как се пише for цикъл?](Content/Chapter-11-tricks-and-hacks/tricks/how-to-write-for-loop.md)
- * [Какво научихме от тази глава?](Content/Chapter-11-tricks-and-hacks/what-we-learned/what-we-learned.md)
+ * [What We Learned in This Chapter?](Content/Chapter-11-tricks-and-hacks/what-we-learned/what-we-learned.md)
* [Заключение](Content/Conclusion/overview.md)
* [Тази книга е само първа стъпка!](Content/Conclusion/that-book-is-first-step/that-book-is-first-step.md)
* [Накъде да продължим след тази книга?](Content/Conclusion/after-the-book/after-the-book.md)
diff --git a/chapter-00-preface.md b/chapter-00-preface.md
deleted file mode 100644
index 36ea9cbb5..000000000
--- a/chapter-00-preface.md
+++ /dev/null
@@ -1,259 +0,0 @@
-# Предговор
-
-Книгата "**Основи на програмирането**" е официален учебник за **курса "Programming Basics"** в Софтуерния университет (SoftUni): [https://softuni.bg/courses/programming-basics](https://softuni.bg/courses/programming-basics). Тя запознава читателите с писането на **програмен код** на начално ниво (basic coding skills), работа със **среда за разработка** (IDE), използване на **променливи** и данни, **оператори** и **изрази**, работа с **конзолата** (четене на входни данни и печатане на резултати), използване на **условни конструкции** (**`if`**, **`if-else`**, **`switch-case`**), **цикли** (**`for`**, **`while`**, **`do-while`**, **`foreach`**) и работа с **методи** (деклариране и извикване на методи, подаване на параметри и връщане на стойност). Използват се езикът за програмиране **C#** и средата за разработка **Visual Studio**. Обхванатият учебен материал дава базова подготовка за по-задълбочено изучаване на програмирането и подготвя читателите за приемния изпит в SoftUni.
-
-
|
-Тази книга ви дава само първите стъпки към програмирането. Тя обхваща съвсем начални умения, които предстои да развивате години наред, докато достигнете до ниво, достатъчно за започване на работа като програмист. |
-
-
-Книгата се използва и като неофициален **[учебник за училищните курсове по програмиране в професионалните гимназии](http://softuni.foundation/projects/applied-software-developer-profession/)**, изучаващи професиите "**Програмист**", "**Приложен програмист**" и "**Системен програмист**", както и като допълнително учебно пособие в началните курсове по програмиране в **средните училища, профилираните и математическите гимназии**, за паралелките с профил "информатика и информационни технологии".
-
-## За кого е тази книга?
-
-Тази книга е подходяща за **напълно начинаещи в програмирането**, които искат да опитат какво е да програмираш и да научат основните конструкции за създаване на програмен код, които се използват в софтуерната разработка, независимо от езиците за програмиране и използваните технологии. Книгата дава една **солидна основа** от практически умения, които се използват за по-нататъшно обучение в програмирането и разработката на софтуер.
-
-За всички, които не са преминали **[безплатния курс по основи на програмирането за напълно начинаещи в SoftUni](https://softuni.bg/apply)**, специално препоръчваме да го запишат **напълно безплатно**, защото програмиране се учи с правене, не с четене! На курса ще получите безплатно достъп до учебни занятия, обяснения и демонстрации на живо или онлайн (като видео уроци), **много практика и писане на код**, помощ при решаване на задачите след всяка тема, достъп до преподаватели, асистенти и ментори, както и форум и дискусионни групи за въпроси, достъп до общност от хиляди навлизащи в програмирането и всякаква друга помощ за начинаещия.
-
-Безплатният курс в SoftUni за напълно начинаещи е подходящ за **ученици** (от 5 клас нагоре), **студенти** и **работещи** други професии, които искат да натрупат технически знания и да разберат дали им харесва да програмират и дали биха се занимавали сериозно с разработка на софтуер за напред.
-
-**Нова група започва всеки месец**. Курсът "Programming Basics" в SoftUni се организира регулярно с няколко различни езика за програмиране, така че опитайте. Обучението е **безплатно** и може да се откажете по всяко време, ако не ви допадне. **Записването** за безплатно присъствено или онлайн обучение за стартиращи в програмирането е достъпно през **формата за кандидатстване в SoftUni**: https://softuni.bg/apply.
-
-## Защо избрахме езика C#?
-
-За настоящата книга избрахме езика **C#**, защото е **съвременен език** за програмиране от високо ниво с отворен код и същевременно е лесен за научаване и **подходящ за начинаещи**. Като употреба C# е **широкоразпространен**, с добре развита екосистема, с многобройни библиотеки и технологични рамки и съответно дава много **перспективи** за развитие. C# комбинира парадигмите на процедурното, обектно-ориентираното и функционалното програмиране по съвременен начин с лесен за употреба синтаксис. В книгата ще използваме **езика C#** и средата за разработка **Visual Studio**, които са достъпни безплатно от Microsoft.
-
-Както ще обясним по-късно, **езикът за програмиране, с който стартираме, няма съществено значение**, но все пак трябва да ползваме някакъв програмен език, и в тази книга сме избрали именно C#. Книгата може да се намери преведена огледално и на други езици за програмиране като Java и JavaScript (вж. https://csharp-book.softuni.bg).
-
-## Книгата на други програмни езици: Java, JavaScript, C++, Python, PHP, Ruby
-
-Настоящата книга по програмиране за напълно начинаещи е достъпна на няколко езика за програмиране (или е в процес на адаптация за тях):
-* [Основи на програмирането със C#](https://csharp-book.softuni.bg)
-* [Основи на програмирането с Java](https://java-book.softuni.bg)
-* [Основи на програмирането с JavaScript](https://js-book.softuni.bg)
-* [Основи на програмирането с Python](https://python-book.softuni.bg)
-* [Основи на програмирането със C++](https://cpp-book.softuni.bg)
-* [Основи на програмирането с PHP](https://php-book.softuni.bg)
-* [Основи на програмирането с Ruby](https://ruby-book.softuni.bg)
-
-Ако предпочитате друг език, изберете си от списъка по-горе.
-
-## Програмиране се учи с много писане, не с четене!
-
-Ако някой си мисли, че ще прочете една книга и ще се научи да програмира без да пише код и да решава здраво задачи, определено е в заблуда. Програмирането се учи с **много, много практика**, с писане на код всеки ден и решаване на стотици, дори хиляди задачи, сериозно и с постоянство, в продължение на години.
-
-Трябва **да решавате здраво задачи**, да бъркате, да се поправяте, да търсите решения и информация в Интернет, да пробвате, да експериментирате, да намирате по-добри решения, да свиквате с кода, със синтаксиса, с езика за програмиране, със средата за разработка, с търсенето на грешки и дебъгването на неработещ код, с разсъжденията над задачите, с алгоритмичното мислене, с разбиването на проблемите на стъпки и имплементацията на всяка стъпка, да трупате опит и да вдигате уменията си всеки ден, защото да се научиш да пишеш код е само **първата стъпка към професията "софтуерен инженер"**. Имате да учите много, наистина много!
-
-Съветваме читателя като минимум **да пробва всички примери от книгата**, да си поиграе с тях, да ги променя и тества. Още по-важни от примерите, обаче, са **задачите за упражнения**, защото те развиват практическите умения на програмиста.
-
-**Решавайте всички задачи от книгата**, защото програмиране се учи с практика! Задачите след всяка тема са внимателно подбрани, така че да покриват в дълбочина обхванатия учебен материал, а целта на решаването на всички задачи от всички обхванати теми е да дадат **цялостни умения за писане на програмен код** на начално ниво (каквато е целта и на тази книга). На курсовете в SoftUni не случайно **наблягаме на практиката** и решаването на задачи, и в повечето курсове писането на код в клас е над 70% от целия курс.
-
-
|
-Решавайте всички задачи за упражнения от книгата. Иначе нищо няма да научите! Програмиране се учи с писане на много код и решаване на хиляди задачи! |
-
-
-## За Софтуерния университет (SoftUni)
-
-[Софтуерният университет (SoftUni)](https://softuni.bg) е **най-мащабният учебен център за софтуерни инженери в България**. През него преминават десетки хиляди студенти всяка година. SoftUni отваря врати през 2014 г. като продължение на усилията на **[д-р Светлин Наков](http://nakov.com)** масирано да изгражда **кадърни софтуерни специалисти** чрез истинско, съвременно и качествено образование, което комбинира фундаментални знания със съвременни софтуерни технологии и много практика.
-
-Софтуерният университет предоставя **качествено образование**, **професия**, **работа** и **възможност за придобиване на бакалавърска степен** за програмисти, софтуерни инженери и ИТ специалисти. SoftUni изгражда изключително успешно трайна **връзка между образование и индустрия**, като си сътрудничи със стотици софтуерни фирми, осигурява работа и стажове на своите студенти, предоставя качествени специалисти за софтуерната индустрия и директно отговаря на нуждите на работодателите чрез учебния процес.
-
-### Безплатните курсове по програмиране в SoftUni
-
-SoftUni организира **безплатни курсове по програмиране за напълно начинаещи** в цяла България - присъствено и онлайн. Целта е **всеки, който има интерес** към програмиране и технологии, **да опита програмирането** и да се увери сам дали то е интересно за него и дали иска да се занимава сериозно с разработка на софтуер. Можете да се запишете за **безплатния курс по основи на програмирането** от страницата за кандидатстване в SoftUni: https://softuni.bg/apply.
-
-Безплатните курсове по основи на програмирането в SoftUni имат за цел да ви запознаят с **основните програмни конструкции** от света на софтуерната разработка, които ще можете да приложите при всеки един език за програмиране. Те включват работа с **данни**, **променливи** и **изрази**, използване на **проверки**, конструиране на **цикли** и дефиниране и извикване на **методи** и други похвати за изграждане на програмна логика. Обученията са **изключително практически насочени**, което означава, че **силно се набляга на упражнения**, а вие получавате възможността да приложите знанията си още докато ги усвоявате.
-
-Настоящият **учебник по програмиране** съпътства безплатните курсове по програмиране за начинаещи в SoftUni и служи като допълнително учебно помагало, в помощ на учебния процес.
-
-### Judge системата за проверка на задачите
-
-**SoftUni Judge системата** (https://judge.softuni.bg) представлява автоматизирана система в Интернет **за проверка на решения на задачи по програмиране чрез поредица от тестове**. Предаването и проверката на задачите се извършва в **реално време**: пращате решение и след секунди получавате отговор дали е вярно. Всеки **успешно** преминат тест дава предвидените за него точки. При вярно решение получавате всички точки за задачата. При частично вярно решение получавате част от точките за дадената задача. При напълно грешно решение, получавате 0 точки.
-
-**Всички задачи от настоящата книга са достъпни за тестване в SoftUni judge** и силно препоръчваме да ги тествате след като ги решите, за да знаете дали не изпускате нещо и дали наистина решението ви работи правилно, според изискванията на задачата.
-
-Имайте предвид и някои **особености на SoftUni judge**:
- - За всяка задача **judge системата пази най-високия постигнат резултат**. Ако качите решение с грешен код или по-слаб резултат от предишното ви изпратено, системата няма да ви отнеме точки.
- - Изходните резултати на вашата програма се **сравняват** от системата стриктно с очаквания резултат. Всеки **излишен символ, липсваща запетайка или интервал** може доведе до 0 точки на съответния тест. **Изходът**, който judge системата очаква, е **описан в условието на всяка задача** и към него **не трябва да се добавя нищо повече**.
-
-**Пример:** ако в изхода се изисква да се отпечата число (напр. `25`), не извеждайте описателни съобщения като `The result is: 25`, а отпечатайте точно каквото се изисква, т.е. само числото.
-
-SoftUni judge системата е **достъпна по всяко време** от нейния сайт: [https://judge.softuni.bg](https://judge.softuni.bg).
- - За вход използвайте автентикацията си от сайта на SoftUni: [https://softuni.bg](https://softuni.bg).
- - Използването на системата е **безплатно** и не е обвързано с участието в курсовете на SoftUni.
-
-Убедени сме, че след няколко изпратени задачи, **ще ви хареса да получавате моментална обратна връзка** дали написаното от вас решение е вярно, и judge системата ще ви стане най-любимия помощник при учене на програмирането.
-
-
-## Как се става програмист?
-
-Драги читатели, сигурно много от вас имат амбицията да стават програмисти, да си изкарват прехраната с разработка на софтуер или да работят в ИТ сектора. Затова сме приготвили за вас **кратко ръководство "Как се става програмист"**, за да ви ориентираме за стъпките към тази така желана професия.
-
-Програмист (на ниво започване на работа в софтуерна фирма) се става за **най-малко 1-2 години здраво учене и писане на код всеки ден**, решаване на няколко хиляди задачи по програмиране, разработка на няколко по-сериозни практически проекта и трупане на много опит с писането на код и разработката на софтуер. Не става за един месец, нито за два! Професията на софтуерния инженер изисква голям обем познания, покрити с много, много практика.
-
-Има **4 основни групи умения**, които всички програмисти трябва да притежават. Повечето от тези умения са устойчиви във времето и не се влияят съществено от развитието на конкретните технологии (които се променят постоянно). Това са уменията, които **всеки добър програмист притежава** и към които всеки новобранец трябва да се стреми:
-* писане на код (20%)
-* алгоритмично мислене (30%)
-* фундаментални знания за професията (25%)
-* езици и технологии за разработка (25%)
-
-### Умение #1 – кодене (20%)
-
-Да се научите **да пишете код** формира около 20% от минималните умения на програмиста, необходими за започване на работа в софтуерна фирма. Умението да кодиш включва следните компоненти:
-* работа с променливи, проверки, цикли
-* ползване на функции, методи, класове и обекти
-* работа с данни: масиви, списъци, хеш-таблици, стрингове
-
-Умението да кодиш **може да се усвои за няколко месеца** усилено учене и здраво решаване на практически задачи с писане на код всеки ден. Настоящата книга покрива само първата точка от умението да кодиш: **работа с променливи, проверки и цикли**. Останалото остава да се научи в последващи обучения, курсове и книги.
-
-Книгата (и курсовете, базирани на нея) дават само началото от едно дълго и сериозно учене, по пътя на професионалното програмиране. Ако не усвоите до съвършенство учебния материал от настоящата книга, няма как да станете програмист. Ще ви липсват фундаментални основи и ще ви става все по-трудно напред. Затова **отделете достатъчно внимание на основите на програмирането**: решавайте здраво задачи и пишете много код месеци наред, докато се научите **да решавате с лекота всички задачи от тази книга**. Тогава продължете напред.
-
-Специално обръщаме внимание, че **езикът за програмиране няма съществено значение** за умението да кодиш. Или можеш да кодиш или не. Ако можеш да кодиш на C#, лесно ще се научиш да кодиш и на Java, и на C++, и на друг език. Затова **уменията да кодираш** се изучават доста сериозно в началните курсове за софтуерни инженери в SoftUni (вж. [учебния план](https://softuni.bg/curriculum)) и с тях стартира всяка книга за програмиране за напълно начинаещи, включително нашата.
-
-### Умение #2 – алгоритмично мислене (30%)
-
-Алгоритмичното (логическо, инженерно, математическо, абстрактно) мислене формира около 30% от минималните умения на програмиста за старт в професията. **Алгоритмичното мислене** е умението да разбивате една задача на логическа последователност от стъпки (алгоритъм) и да намирате решение за всяка отделна стъпка, след което да сглобявате стъпките в работещо решение на първоначалната задача. Това е най-важното умение на програмиста.
-
-Как **да си изградим алгоритмично мислене**?
-* Алгоритмичното мислене се развива се чрез решаване на **много (1000+) задачи** по програмиране, възможно най-разнообразни. Това е рецептата: решаване на хиляди практически задачи, измисляне на алгоритъм за тях и имплементиране на алгоритъма, заедно с дебъгване на грешките по пътя.
-* Помагат физика, математика и/или подобни науки, но не са задължителни! Хората с **инженерни и технически наклонности** обикновено по-лесно се научават да мислят логически, защото имат вече изградени умения за решаване на проблеми, макар и не алгоритмични.
-* Способността **да решавате задачи по програмиране** (за която е нужно алгоритмично мислене) е изключително важна за програмиста. Много фирми изпитват единствено това умение при интервюта за работа.
-
-Настоящата книга развива **начално ниво на алгоритмично мислене**, но съвсем не е достатъчна, за да ви направи добър програмист. За да станете кадърни в професията, ще трябва да добавите **умения за логическо мислене и решаване на задачи** отвъд обхвата на тази книга, например работа със **структури от данни** (масиви, списъци, матрици, хеш-таблици, дървовидни структури) и базови **алгоритми** (търсене, сортиране, обхождане на дървовидни структури, рекурсия и други).
-
-**Умения за алгоритмично мислене** се развиват сериозно в началните курсове за софтуерни инженери в SoftUni (вж. [учебния план](https://softuni.bg/curriculum)), както и в специализираните курсове по [структури от данни](https://softuni.bg/opencourses/data-structures) и [алгоритми](https://softuni.bg/opencourses/algorithms).
-
-Както може би се досещате, **езикът за програмиране няма значение** за развиването на алгоритмичното мислене. Да мислиш логически е универсално, дори не е свързано само с програмирането. Именно заради силно развитото логическото мислене се счита, че **програмистите са доста умни** и че прост човек не може да стане програмист.
-
-### Умение #3 – фундаментални знания за професията (25%)
-
-**Фундаменталните знания и умения** за програмирането, разработката на софтуер, софтуерното инженерство и компютърните науки формират около 25% от минималните умения на програмиста за започване на работа. Ето по-важните от тези знания и умения:
-* **базови математически концепции**, свързани с програмирането: координатни системи, вектори и матрици, дискретни и недискретни математически функции, крайни автомати и state machines, понятия от комбинаториката и статистика, сложност на алгоритъм, математическо моделиране и други
-* **умения да програмираш** - писане на код, работа с данни, ползване на условни конструкции и цикли, работа с масиви, списъци и асоциативни масиви, стрингове и текстообработка, работа с потоци и файлове, ползване на програмни интерфейси (APIs), работа с дебъгер и други
-* **структури от данни и алгоритми** - списъци, дървета, хеш-таблици, графи, търсене, сортиране, рекурсия, обхождане на дървовидни структури и други
-* **обектно-ориентирано програмиране** (ООП) – работа с класове, обекти, наследяване, полиморфизъм, абстракция, интерфейси, капсулация на данни, управление на изключения, шаблони за дизайн
-* **функционално програмиране** (ФП) - работа с ламбда функции, функции от по-висок ред, функции, които връщат като резултат функция, затваряне на състояние във функция (closure) и други
-* **бази данни** - релационни и нерелационни бази данни, моделиране на бази данни (таблици и връзки между тях), език за заявки SQL, технологии за обектно-релационен достъп до данни (ORM), транзакционност и управление на транзакции
-* **мрежово програмиране** - мрежови протоколи, мрежова комуникация, TCP/IP, понятия, инструменти и технологии от компютърните мрежи
-* взаимодействие **клиент-сървър**, комуникация между системи, back-end технологии, front-end технологии, MVC архитектури
-* **технологии за сървърнa (back-end) разработка** - архитектура на уеб сървър, HTTP протокол, MVC архитектура, REST архитектура, frameworks за уеб разработка, templating engines
-* **уеб front-end технологии (клиентска разработка)** - HTML, CSS, JS, HTTP, DOM, AJAX, комуникация с back-end, извикване на REST API, front-end frameworks, базови дизайн и UX (user experience) концепции
-* **мобилни технологии** - мобилни приложения, Android и iOS разработка, мобилен потребителски интерфейс (UI), извикване на сървърна логика
-* **вградени системи** - микроконтролери, управление на цифров и аналогов вход и изход, достъп до сензори, управление на периферия
-* **операционни системи** - работа с операционни системи (Linux, Windows и други), инсталация, конфигурация и базова системна администрация, работа с процеси, памет, файлова система, потребители, многозадачност, виртуализация и контейнери
-* **паралелно програмиране и асинхронност** - управление на нишки, асинхронни задачи, promises, общи ресурси и синхронизация на достъпа
-* **софтуерно инженерство** - сорс контрол системи, управление на разработката, планиране и управление на задачи, методологии за софтуерна разработка, софтуерни изисквания и прототипи, софтуерен дизайн, софтуерни архитектури, софтуерна документация
-* **софтуерно тестване** - компонентно тестване (unit testing), test-driven development, QA инженерство, докладване на грешки и тракери за грешки, автоматизация на тестването, билд процеси и непрекъсната интеграция
-
-Трябва да поясним и този път, че **езикът за програмиране няма значение** за усвояването на всички тези умения. Те се натрупват бавно, в течение на много години практика в професията. Някои знания са фундаментални и могат да се усвояват теоретично, но за пълното им разбиране и осъзнаването им дълбочина, са необходими години практика.
-
-Фундаментални знания и умения за програмирането, разработката на софтуер, софтуерното инженерство и компютърните науки се учат по време на **[цялостната програма за софтуерни инженери в SoftUni](https://softuni.bg/curriculum)**, както и с редица [изборни курсове](https://softuni.bg/trainings/opencourses). Работата с разнообразни софтуерни библиотеки, програмни интерфейси (APIs), технологични рамки (frameworks) и софтуерни технологии и тяхното взаимодействие, постепенно изграждат тези знания и умения, така че не очаквайте да ги добиете от единичен курс, книга или проект.
-
-За започване на работа като програмист обикновено са достатъчни само **начални познания в изброените по-горе области**, а задълбаването става на работното място според използваните технологии и инструменти за разработка в съответната фирма и екип.
-
-### Умение #4 - езици за програмиране и софтуерни технологии (25%)
-
-**Езиците за програмиране и технологиите за софтуерна разработка** формират около 25% от минималните умения на програмиста. Те са най-обемни за научаване, но най-бързо се променят с времето. Ако погледнем **обявите за работа** от софтуерната индустрия, там често се споменават всякакви думички (като изброените по-долу), но всъщност в обявите мълчаливо **се подразбират първите три умения**: да кодиш, да мислиш алгоритмично и да владееш фундамента на компютърните науки и софтуерното инженерство.
-
-За тези чисто технологични умения вече **езикът за програмиране има значение**.
-* **Обърнете внимание**: само за тези 25% от професията има значение езикът за програмиране!
-* **За останалите 75% от уменията няма значение езикът** и тези умения са устойчиви във времето и преносими между различните езици и технологии.
-
-Ето и някои често използвани езици и технологии (software development stacks), които се търсят от софтуерните фирми (актуални към май 2017 г.):
-* **C#** + ООП + ФП + класовете от .NET + база данни SQL Server + Entity Framework (EF) + ASP.NET MVC + HTTP + HTML + CSS + JS + DOM + jQuеry
-* **Java** + Java API classes + ООП + ФП + бази данни + MySQL + HTTP + уеб програмиране + HTML + CSS + JS + DOM + jQuery + JSP/Servlets + Spring MVC или Java EE / JSF
-* **PHP** + ООП + бази данни + MySQL + HTTP + уеб програмиране + HTML + CSS + JS + DOM + jQuery + Laravel / Symfony / друг MVC framework за PHP
-* **JavaScript** (JS) + ООП + ФП + бази данни + MongoDB или MySQL + HTTP + уеб програмиране + HTML + CSS + JS + DOM + jQuery + Node.js + Express + Angular или React
-* **Python** + ООП + ФП + бази данни + MongoDB или MySQL + HTTP + уеб програмиране + HTML + CSS + JS + DOM + jQuery + Django
-* **C++** + ООП + STL + Boost + native development + бази данни + HTTP + други езици
-* **Swift** + MacOS + iOS + Cocoa + Cocoa Touch + XCode + HTTP + REST + други езици
-
-Ако изброените по-горе думички ви изглеждат страшни и абсолютно непонятни, значи сте съвсем в началото на кариерата си и имате **да учите още години** докато достигнете професията "софтуерен инженер". Не се притеснявайте, всеки програмист преминава през един или няколко технологични стека и се налага да изучи **съвкупност от взаимосвързани технологии**, но в основата на всичко това стои **умението да пишеш програмна логика (да кодиш)**, което се развива в тази книга, и умението **да мислиш алгоритмично** (да решаваш задачи по програмиране). Без тях не може!
-
-### Езикът за програмиране няма значение!
-
-Както вече стана ясно, **разликата между езиците за програмиране** и по-точно между уменията на програмистите на различните езици и технологии, е в около **10-20% от уменията**.
-* Всички програмисти имат около **80-90% еднакви умения**, които не зависят от езика! Това са уменията да програмираш и да разработваш софтуер, които са много подобни в различните езици за програмиране и технологии за разработка.
-* Колкото повече езици и технологии владеете, толкова по-бързо ще учите нови и толкова по-малко ще усещате разлика между тях.
-
-Наистина, **езикът за програмиране почти няма съществено значение**, просто трябва да се научите да програмирате, а това започва с **коденето** (настоящата книга), продължава в по-сложните **концепции от програмирането** (като структури от данни, алгоритми, ООП и ФП) и включва усвояването на **фундаментални знания и умения за разработката на софтуер, софтуерното инженерство и компютърните науки**.
-
-Едва накрая, когато захванете конкретни технологии в даден софтуерен проект, ще ви трябват **конкретен език за програмиране**, познания за конкретни програмни библиотеки (APIs), работни рамки (frameworks) и софтуерни технологии (front-end UI технологии, back-end технологии, ORM технологии и други). Спокойно, ще ги научите, всички програмисти ги научават, но първо се научават на фундамента: **да програмират и то добре**.
-
-Настоящата книга използва езика C#, но той не е съществен и може да се замени с Java, JavaScript, Python, PHP, C++, Ruby, Swift, Go, Kotlin или друг език. За овладяване на **професията "софтуерен разработчик"** е необходимо да се научите да **кодите** (20%), да се научите да **мислите алгоритмично** и да **решавате проблеми** (30%), да имате **фундаментални знания по програмиране и компютърни науки** (25%) и да владеете **конкретен език за програмиране и технологиите около него** (25%). Имайте търпение, за година-две всичко това може да се овладее на добро начално ниво, стига да сте сериозни и усърдни.
-
-## Книгата в помощ на учителите
-
-Ако сте **учител по програмиране**, информатика или информационни технологии или искате **да преподавате програмиране**, тази книга ви дава нещо повече от добре структуриран учебен материал с много примери и задачи. **Безплатно** към книгата получаватe **качествено учебно съдържание** за преподаване в училище, на **български език**, съобразено с училищните изисквания:
-
-* **Учебни презентации** (PowerPoint слайдове) за всяка една учебна тема, съобразени с 45-минутните часове в училищата – безплатно.
-* Добре разработени **задачи за упражнения** в клас и за домашно, с детайлно описани условия и примерен вход и изход – безплатно.
-* **Система за автоматизирана проверка на задачите** и домашните (online judge system), която да се използва от учениците, също безплатно.
-* **Видео-уроци** с методически указания от **безплатния курс за учители по програмиране**, който се провежда регулярно от SoftUni фондацията.
-
-Всички тези **безплатни преподавателски ресурси** можете да намерите на сайта на SoftUni фондацията, заедно с учебно съдържание за цяла поредица от курсове по програмиране и софтуерни технологии. Изтеглете ги свободно от тук: http://softuni.foundation/projects/applied-software-developer-profession/.
-
-## Историята на тази книга
-
-Главен двигател и ръководител на проекта за създаване на настоящата **свободна книга по програмиране за начинаещи** с отворен код е **[д-р Светлин Наков](http://www.nakov.com)**. Той е основен идеолог и създател на учебното съдържание от **[курса "Основи на програмирането" в SoftUni](https://softuni.bg/courses/programming-basics)**, който е използван за основа на книгата.
-
-Всичко започва с масовите **безплатни курсове по основи на програмирането**, провеждани в цялата страна от 2014 г. насам, когато стартира инициативата "SoftUni". В началото тези курсове имат по-голям обхват и включват повече теория, но през 2016 г. д-р Светлин Наков изцяло ги преработва, обновява, опростява и насочва много силно към практиката. Така е създадено ядрото на **учебното съдържание от тази книга**.
-
-Безплатните обучения на SoftUni за старт в програмирането са може би най-мащабните, провеждани някога в България. До 2017 г. курсът на SoftUni по основи на програмирането **се провежда над 150 пъти в близо 40 български града** присъствено и многократно онлайн, с над 50 000 участника. Съвсем естествено възниква и нуждата да се напише **учебник** за десетките хиляди участници в курсовете на SoftUni по програмиране за начинаещи. На принципа на свободния софтуер и свободното знание, Светлин Наков повежда **екип от доброволци** и задвижва този open-source проект, първоначално за създаване на книга по основи на програмирането с езика C#, а по-късно и с други езици за програмиране.
-
-Проектът е част от усилията на **[Фондация "Софтуерен университет"](http://softuni.foundation)** да създава и разпространява отворено учебно съдържание за обучение на софтуерни инженери и ИТ специалисти.
-
-### Авторски колектив
-
-Настоящата книга е разработена от широк авторски колектив от **доброволци**, които отделиха от своето време, за да ви подарят тези систематизирани знания и насоки при старта в програмирането. Списък на всички автори и редактори (по азбучен ред):
-
-> **Aлександър Кръстев, Александър Лазаров, Ангел Димитриев, Васко Викторов, Венцислав Петров, Даниел Цветков, Димитър Татарски, Димо Димов, Диян Тончев, Елена Роглева, Живко Недялков, Жулиета Атанасова, Захария Пехливанова, Ивелин Кирилов, Искра Николова, Калин Примов, Кристиян Памидов, Любослав Любенов, Николай Банкин, Николай Димов, Павлин Петков, Петър Иванов, Росица Ненова, Руслан Филипов, Светлин Наков, Стефка Василева, Теодор Куртев, Тоньо Желев, Християн Христов, Христо Христов, Цветан Илиев, Юлиан Линев, Яница Вълева**
-
-Дизайн на корица: Марина Шидерова - https://behance.net/marinashiderova
-
-## Официален сайт на книгата
-
-Настоящата книга по **основи на програмирането със C#** за начинаещи е достъпна за свободно ползване в Интернет от адрес:
-
-
https://csharp-book.softuni.bg
-
-Това е **официалният сайт на книгата** и там ще бъде качвана нейната последна версия. Книгата е преведена огледално и на други езици за програмиране, посочени на нейния сайт.
-
-## Форум за вашите въпроси
-
-Задавайте вашите **въпроси към настоящата книга** по основи на програмирането във **форума на SoftUni:**
-
-
https://softuni.bg/forum
-
-В този дискусионен форум ще получите безплатно **адекватен отговор по всякакви въпроси от учебното съдържание на настоящия учебник**, както и по други въпроси от програмирането. Общността на SoftUni за навлизащи в програмирането е толкова голяма, че обикновено отговор на зададен въпрос се получава **до няколко минути**. Преподавателите, асистентите и менторите от SoftUni също отговарят постоянно на вашите въпроси.
-
-Поради големия брой учащи по настоящия учебник, във форума можете да намерите **решение на практически всяка задача от него**, споделено от ваш колега. Хиляди студенти преди вас вече са решавали същите задачи, така че ако закъсате, потърсете из форума. Макар и задачите в курса "Основи на програмирането" да се сменят от време на време, споделянето е винаги насърчавано в SoftUni и затова лесно ще намерите решения и насоки за всички задачи.
-
-Ако все пак имате конкретен въпрос, например защо не тръгва дадена програма, над която умувате от няколко часа, **задайте го във форума** и ще получите отговор. Ще се учудите колко добронамерени и отзивчиви са обитателите на SoftUni форума.
-
-## Официална Facebook страница на книгата
-
-Книгата си има и **официална Facebook страница**, от която може да следите за новини около книгите от поредицата "Основи на програмирането", нови издания, събития и инициативи:
-
-
fb.com/IntroProgrammingBooks
-
-## Лиценз и разпространение
-
-Книгата се разпространява **безплатно** в електронен формат под отворен лиценз **[CC-BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/)**.
-
-Книгата се издава и разпространява **на хартия** от SoftUni и хартиено копие може да се закупи от рецепцията на SoftUni (вж. https://softuni.bg/contacts).
-
-**Сорс кодът** на книгата може да се намери в GitHub: https://github.com/SoftUni/Programming-Basics-Book-CSharp-BG.
-
-Международен стандартен номер на книга ISBN: **978-619-00-0635-0**.
-
-## Докладване на грешки
-
-Ако откриете **грешки**, неточности или дефекти в книгата, можете да ги докладвате в официалния тракер на проекта:
-
-
https://github.com/SoftUni/Programming-Basics-Book-CSharp-BG/issues
-
-Не обещаваме, че ще поправим всичко, което ни изпратите, но пък имаме желание **постоянно да подобряваме качеството** на настоящата книга, така че докладваните безспорни грешки и всички разумни предложения ще бъдат разгледани.
-
-## Приятно четене!
-
-И не забравяйте **да пишете код** в големи количества, да **пробвате примерите** от всяка тема и най-вече да **решавате задачите от упражненията**. Само с четене няма да се научите да програмирате, така че решавайте задачи здраво!
diff --git a/chapter-01-first-steps-in-programming.md b/chapter-01-first-steps-in-programming.md
deleted file mode 100644
index dd0baae6b..000000000
--- a/chapter-01-first-steps-in-programming.md
+++ /dev/null
@@ -1,598 +0,0 @@
-# Глава 1. Първи стъпки в програмирането
-
-В тази глава ще разберем **какво е програмирането** в неговата същина. Ще се запознаем с идеята за **програмни езици** и ще разгледаме **средите за разработка на софтуер** (IDE) и как да работим с тях, в частност с **Visual Studio**. Ще напишем и изпълним **първата си програма** на програмния език **C#**, а след това ще се упражним с няколко задачи: ще създадем конзолна програма, графично приложение и уеб приложение. Ще се научим как да проверяваме за коректност решенията на задачите от тази книга в **Judge системата на SoftUni** и накрая ще се запознаем с типичните грешки, които често се допускат при писането на код и как да се предпазим от тях.
-
-## Видео
-
-
-
-
-## Какво означава "да програмираме"?
-
-**Да програмираме** означава да даваме команди на компютъра какво да прави, например "*да изсвири някакъв звук*", "*да отпечата нещо на екрана*" или "*да умножи две числа*". Когато командите са няколко една след друга, те се наричат **компютърна програма**. Текстът на компютърните програми се нарича **програмен код** (или **сорс код** или за по-кратко **код**).
-
-### Компютърни програми
-
-**Компютърните програми** представляват **поредица от команди**, които се изписват на предварително избран **език за програмиране**, например C#, Java, JavaScript, Python, Ruby, PHP, C, C++, Swift, Go или друг. За да пишем команди, трябва да знаем **синтаксиса и семантиката на езика**, с който ще работим, в нашия случай **C#**. Затова ще се запознаем със синтаксиса и семантиката на езика C# и с програмирането като цяло в настоящата книга, изучавайки стъпка по стъпка писането на код, от по-простите към по-сложните програмни конструкции.
-
-### Алгоритми
-
-Компютърните програми обикновено изпълняват някакъв алгоритъм. **Алгоритмите** са последователност от стъпки, необходими за да се свърши определена работа и да се постигне някакъв очакван резултат, нещо като "рецепта". Например, ако пържим яйца, ние изпълняваме някаква рецепта (алгоритъм): загряваме мазнина в някакъв съд, чупим яйцата, изчакваме докато се изпържат, отместваме от огъня. Аналогично, в програмирането **компютърните програми изпълняват алгоритми**: поредица от команди, необходими, за да се свърши определена работа. Например, за да се подредят поредица от числа в нарастващ ред, е необходим алгоритъм, примерно да се намери най-малкото число и да се отпечата, от останалите числа да се намери отново най-малкото число и да се отпечата и това се повтаря докато числата свършат.
-
-За удобство при създаването на програми, за писане на програмен код (команди), за изпълнение на програмите и за други операции, свързани с програмирането, ни е необходима и **среда за разработка**, например Visual Studio.
-
-### Езици за програмиране, компилатори, интерпретатори и среди за разработка
-
-**Езикът за програмиране** е изкуствен език (синтаксис за изразяване), предназначен за **задаване на команди**, които искаме компютърът да прочете, обработи и изпълни. Чрез езиците за програмиране пишем поредици от команди (**програми**), които **задават какво да прави компютъра**. Изпълнението на компютърните програми може да се реализира с **компилатор** или с **интерпретатор**.
-
-**Компилаторът** превежда кода от програмен език на **машинен код**, като за всяка от конструкциите (командите) в кода избира подходящ, предварително подготвен фрагмент от машинен код, като междувременно **проверява за грешки текста на програмата**. Заедно компилираните фрагменти съставят програмата в машинен код, както я очаква микропроцесорът на компютъра. След като е компилирана програмата, тя може да бъде директно изпълнена от микропроцесора в кооперация с операционната система. При компилируемите езици за програмиране **компилирането на програмата** се извършва задължително преди нейното изпълнение и по време на компилация се откриват синтактичните грешки (грешно зададени команди). С компилатор работят езици като C++, C#, Java, Swift и Go.
-
-Някои езици за програмиране не използват компилатор, а се **интерпретират директно** от специализиран софтуер, наречен "интерпретатор". **Интерпретаторът** е "**програма за изпълняване на програми**", написани на някакъв програмен език. Той изпълнява командите на програмата една след друга, като разбира не само от единични команди и поредици от команди, но и от другите езикови конструкции (проверки, повторения, функции и т.н.). Езици като PHP, Python и JavaScript работят с интерпретатор и се изпълняват без да се компилират. Поради липса на предварителна компилация, при интерпретеруемите езици **грешките се откриват по време на изпълнение**, след като програмата започне да работи, а не предварително.
-
-**Средата за програмиране** (Integrated Development Environment - **IDE**, интегрирана среда за разработка) е съвкупност от традиционни инструменти за разработване на софтуерни приложения. В средата за разработка пишем код, компилираме и изпълняваме програмите. Средите за разработка интегрират в себе си **текстов редактор** за писане на кода, **език за програмиране**, **компилатор или интерпретатор** и **среда за изпълнение** за изпълнение на програмите, **дебъгер** за проследяване на програмата и търсене на грешки, **инструменти за дизайн на потребителски интерфейс** и други инструменти и добавки.
-
-**Средите за програмиране** са удобни, защото интегрират всичко необходимо за разработката на програмата, без да се напуска средата. Ако не ползваме среда за разработка, ще трябва да пишем кода в текстов редактор, да го компилираме с команда от конзолата, да го изпълняваме с друга команда от конзолата и да пишем още допълнителни команди, когато се налага, и това ще ни губи време. Затова повечето програмисти ползват IDE в ежедневната си работа.
-
-За програмиране на **езика C#** най-често се ползва средата за разработка **Visual Studio**, която се разработва и разпространява безплатно от Microsoft и може да се изтегли от: https://www.visualstudio.com/downloads/. Алтернативи на Visual Studio са **Rider** (https://www.jetbrains.com/rider/) и **MonoDevelop** / **Xamarin Studio** (http://www.monodevelop.com) и **SharpDevelop** (http://www.icsharpcode.net/OpenSource/SD/). В настоящата книга ще използваме средата за разработка Visual Studio.
-
-### Езици от ниско и високо ниво, среди за изпълнение (Runtime Environments)
-
-Програмата в своята същност е **набор от инструкции**, които карат компютъра да свърши определена задача. Те се въвеждат от програмиста и се **изпълняват безусловно от машината**.
-
-Съществуват различни видове **езици за програмиране**. С езиците от най-ниско ниво могат да бъдат написани **самите инструкции**, които **управляват процесора**, например с езика "**assembler**". С езици от малко по-високо ниво като **C** и **C++** могат да бъдат създадени операционна система, драйвери за управление на хардуера (например драйвер за видеокарта), уеб браузъри, компилатори, двигатели за графика и игри (game engines) и други системни компоненти и програми. С езици от още по-високо ниво като **C#**, **Python** и **JavaScript** се създават приложни програми, например програма за четене на поща или чат програма.
-
-**Езиците от ниско ниво** управляват директно хардуера и изискват много усилия и огромен брой команди, за да свършат единица работа. **Езиците от по-високо ниво** изискват по-малко код за единица работа, но нямат директен достъп до хардуера. На тях се разработва приложен софтуер, например уеб приложения и мобилни приложения.
-
-Болшинството софтуер, който използваме ежедневно, като музикален плеър, видеоплеър, GPS програма и т.н., се пише на **езици за приложно програмиране**, които са от високо ниво, като C#, Java, Python, C++, JavaScript, PHP и др.
-
-**C# е компилируем език**, а това означава, че пишем команди, които се компилират преди да се изпълнят. Именно тези команди, чрез помощна програма (компилатор), се преобразуват във файл, който може да се изпълнява (executable). За да пишем на език като **C#** ни трябва текстов редактор или среда за разработка и **.NET среда за изпълнение**.
-
-**.NET средата за изпълнение** (.NET Runtime Environment) представлява виртуална машина, нещо като компютър в компютъра, която може да изпълнява компилиран C# код. С риск да навлезем в твърде много детайли, трябва да поясним, че езикът C# се компилира до междинен .NET код и се изпълнява от .NET средата, която компилира този междинен код допълнително в движение до машинни инструкции (машинен код) за да се изпълни от микропроцесора. .NET средата съдържа библиотеки с класове, **CSC** компилатор, **CLR** (Common Language Runtime - CLR) и други компоненти, които са необходими, за да работим с езика C# и изпълняваме C# програми.
-
-**Средата .NET** е достъпна като свободен софтуер с отворен код за всички съвременни операционни системи (като Windows, Linux и Mac OS X). Тя има две разновидности, **.NET Framework** (по-старата) и **.NET Core** (по-новата), но всичко това няма съществено значение за навлизането в програмирането. Нека се фокусираме върху писането на програми с езика C#.
-
-### Компютърни програми - компилация и изпълнение
-
-Както вече споменахме, програмата е **последователност от команди**, иначе казано тя описва поредица от пресмятания, проверки, повторения и всякакви подобни операции, които целят постигане на някакъв резултат.
-
-Програмата се пише в текстов формат, а самият текст на програмата се нарича **сорс код** (source code). Той се компилира до **изпълним файл** (например **`Program.cs`** се компилира до **`Program.exe`**) или се **изпълнява директно** от .NET средата.
-
-Процесът на **компилация** на кода преди изпълнение се използва само при компилируеми езици като C#, Java и C++. При **скриптови и интерпретеруеми езици**, като JavaScript, Python и PHP, сорс кодът се изпълнява постъпково от интерпретатор.
-
-### Компютърни програми – примери
-
-Да започнем с много прост пример за кратка C# програма.
-
-#### Пример: програма, която свири музикалната нота "ла"
-
-Нашата първа програма ще е единична C# команда, която свири музикалната нота "ла" (432 херца) с продължителност половин секунда (500 милисекунди):
-
-```csharp
-Console.Beep(432, 500);
-```
-
-След малко ще разберем как можем да изпълним тази команда и да чуем звука от нотата, но засега нека само разгледаме какво представляват командите в програмирането. Да се запознаем с още няколко примера.
-
-#### Пример: програма, която свири поредица от музикални ноти
-
-Можем да усложним предходната програма, като зададем за изпълнение повтарящи се в цикъл команди за свирене на поредица от ноти с нарастваща височина:
-
-```csharp
-for (i = 200; i <= 4000; i += 200)
-{
- Console.Beep(i, 100);
-}
-```
-
-В горния пример караме компютъра да свири една след друга за много кратко (по 100 милисекунди) всички ноти с височина 200, 400, 600 и т.н. херца до достигане на 4000 херца. Резултатът от програмата е свирене на нещо като мелодия.
-
-Как работят повторенията (циклите) в програмирането ще научим в **главата "[Цикли](chapter-05-loops.md)"**, но засега приемете, че просто повтаряме някаква команда много пъти.
-
-#### Пример: програма, която конвертира от левове в евро
-
-Да разгледаме още една проста програма, която прочита от потребителя някаква сума в лева (цяло число), конвертира я в евро (като я разделя на курса на еврото) и отпечатва получения резултат. Това е програма от 3 поредни команди:
-
-```csharp
-var leva = int.Parse(Console.ReadLine());
-var euro = leva / 1.95583;
-Console.WriteLine(euro);
-```
-
-Разгледахме **три примера за компютърни програми**: единична команда, серия команди в цикъл и поредица от 3 команди. Нека сега преминем към по-интересното: как можем да пишем собствени програми на **C#** и как можем да ги компилираме и изпълняваме?
-
-## Как да напишем конзолна програма?
-
-Нека преминем през **стъпките за създаване и изпълнение на компютърна програма**, която чете и пише своите данни от и на текстова конзола (прозорец за въвеждане и извеждане на текст). Такива програми се наричат "**конзолни**". Преди това, обаче, трябва първо да си **инсталираме и подготвим средата за разработка**, в която ще пишем и изпълняваме C# програмите от тази книга и упражненията към нея.
-
-## Среда за разработка (IDE)
-
-Както вече стана дума, за да програмираме ни е нужна **среда за разработка** - **Integrated Development Environment** (IDE). Това е всъщност редактор за програми, в който пишем програмния код и можем да го компилираме и изпълняваме, да виждаме грешките, да ги поправяме и да стартираме програмата отново.
- - За програмиране на C# използваме средата **Visual Studio** за операционната система Windows и **MonoDevelop** или **Raider** за Linux или Mac OS X.
- - Ако програмираме на Java, подходящи са средите **IntelliJ IDEA**, **Eclipse** или **NetBeans**.
- - Ако ще пишем на Python, можем да използваме средата **PyCharm**.
-
-### Инсталация на Visual Studio Community
-
-Започваме с инсталацията на интегрираната среда **Microsoft Visual Studio Community** (версия 2017, актуална към юни 2017 г.).
-
-**Community** версията на Visual Studio (VS) се разпространява безплатно от Microsoft и може да бъде изтеглена от: [https://www.visualstudio.com/vs/community](https://www.visualstudio.com/vs/community). Инсталацията е типичната за Windows с [**Next**], [**Next**] и [**Finish**], но е важно да включим компонентите за "**desktop development**" и "**ASP.NET**". Не е необходимо да променяме останалите настройки за инсталация.
-
-В следващите редове подробно са описани подробно **стъпките за инсталация на Visual Studio** (версия Community 2017). След като свалим инсталационния файл и го стартираме, се появява следният екран:
-
-![](assets/chapter-1-images/00.visual-studio-1.png)
-
-Натискаме бутона [**Continue**], след което ще видим прозореца долу:
-
-![](assets/chapter-1-images/00.visual-studio-2.png)
-
-Зарежда се прозорец с инсталационния панел на Visual Studio.
-
-![](assets/chapter-1-images/00.visual-studio-3.png)
-
-Слагаме отметка на [**Universal Windows Platform development**], [**.NET desktop development**] и [**ASP.NET and web development**], след което натискаме бутона [**Install**]. Общо взето това е всичко.
-
-![](assets/chapter-1-images/00.visual-studio-4.png)
-
-Започва инсталацията на Visual Studio и ще се появи екран като този по-долу:
-
-![](assets/chapter-1-images/00.visual-studio-5.png)
-
-След като Visual Studio се инсталира, ще се появи информативен екран и трябва да натиснем бутона [**Launch**], за да го стартираме.
-
-![](assets/chapter-1-images/00.visual-studio-6.png)
-
-След **старта на VS** излиза екран като този по-долу. От него можем да изберем дали да влезем с Microsoft профила си във Visual Studio. За момента избираме да работим без да сме се логнали с Microsoft акаунта си, затова избираме опцията [**Not now, maybe later.**]. На по-късен етап, ако имате такъв акаунт, можете да се логнете, а ако нямате и срещате затруднения със създаването му, винаги можете да пишете във форума на SoftUni: [https://softuni.bg/forum](https://softuni.bg/forum).
-
-![](assets/chapter-1-images/00.visual-studio-7.png)
-
-Следващата стъпка е да изберем **цветовата тема**, с която да се визуализира Visual Studio. Тук изборът е изцяло според предпочитанията на потребителя, като няма значение коя опция ще бъде избрана.
-
-![](assets/chapter-1-images/00.visual-studio-8.png)
-
-Натискаме бутона [**Start Visual Studio**] и се зарежда в началния изглед на Visual Studio Community:
-
-![](assets/chapter-1-images/00.visual-studio-9.png)
-
-Това е всичко. Готови сме за работа с Visual Studio.
-
-### По-стари версии на Visual Studio
-
-Можем да използваме и по-стари версии на Visual Studio (например версия 2015 или 2013 или дори 2010 или 2005), но **не е препоръчително**, тъй като в тях не се съдържат някои от по-новите възможности за разработка и не всички примери от книгата ще тръгнат.
-
-### Онлайн среди за разработка
-
-Съществуват и **алтернативни среди за разработка онлайн**, директно във вашия уеб браузър. Тези среди не са много удобни, но ако нямате друга възможност, може да стартирате обучението си с тях и да си качите Visual Studio по-късно. Ето някои линкове:
-* За езика C# сайтът **.NET Fiddle** позволява писане на код и изпълнението му онлайн: [https://dotnetfiddle.net](https://dotnetfiddle.net).
-* За Java можем да използваме следното онлайн Java IDE: [https://www.compilejava.net](https://www.compilejava.net).
-* За JavaScript можем да пишем JS код директно в конзолата на даден браузър с натискане на **[F12]**.
-
-### Проектни решения и проекти във Visual Studio
-
-Преди да започнем да работим с Visual Studio е нужно да се запознаем с понятията **Visual Studio Solution** и **Visual Studio Project**, които са неизменна част от него.
-
-**Visual Studio Project** представлява "проектът", върху който работим. В началото това ще са нашите конзолни програми, които ще се научим да пишем с помощта на настоящата книга, ресурсите към нея и в курса Programming Basics в SoftUni. При по-задълбочено изучаване и с времето и практиката, тези проекти ще преминат в апликации, уеб приложения и други разработки. Проектът във VS **логически групира множество файлове**, изграждащи дадено приложение или компонент. Един **C# проект** съдържа един или няколко **C# сорс файла**, конфигурационни файлове и други ресурси. Във всеки C# сорс файл има една или повече **дефиниции на типове** (класове или други дефиниции). В **класовете** има **методи** (действия), а те се състоят от **поредици от команди**. Изглежда сложно, но при големи проекти такава структура е много удобна и позволява добра организация на работните файлове.
-
-**Visual Studio Solution** представлява контейнер (работно решение), в който **логически са обединени няколко проекта**. Целта на обединението на тези VS Projects е да има възможност кода от който и да е от проектите, да си взаимодейства с кода на останалите VS проекти, за да може приложението или уеб сайта да работи коректно. Когато софтуерният продукт или услуга, който разработваме е голям, той се изгражда като **VS Solution**, а този Solution се разделя на **проекти** (VS Projects) и във всеки проект има **папки със сорс файлове**. Такава йерархична организация е много удобна при по-сериозни проекти (да кажем над 50 000 реда код).
-
-За **малки проекти** VS Solutions и VS Projects повече **усложняват работата**, отколкото помагат, но се свиква бързо.
-
-## Пример: създаване на конзолна програма "Hello C#"
-
-Да се върнем на нашата конзолна програма. Вече имаме Visual Studio и можем да го стартираме. След това създаваме нов конзолен проект: [**File**] → [**New**] → [**Project**] → [**Visual C#**] → [**Windows**] → [**Console Application**].
-
-![](assets/chapter-1-images/01.Hello-csharp-01.png)
-
-Задаваме **смислено име** на нашата програма, например `HelloCSharp`:
-
-![](assets/chapter-1-images/01.Hello-csharp-02.png)
-
-Visual Studio ще създаде за нас **празна C# програма**, която трябва да допишем (VS Solution с VS Project в него със C# сорс файл в него с един C# клас в него с **`Main()`** метод в него).
-
-### Писане на програмен код
-
-Сорс кодът на C# програмите се пише в секцията **`Main(string[] args)`**, между отварящата и затварящата скоба **`{ }`**. Това е главният метод (действие), което се изпълнява при стартиране на една C# програма. Този главен **`Main()`** метод може да се запише по два начина:
- - **`static void Main(string[] args)`** - с параметри от командния ред (няма да навлизаме в подробности)
- - **`static void Main()`** - без параметри от командния ред
-
-И двата начина са валидни, като **вторият е за предпочитане**, защото е по-кратък и по-изчистен. По подразбиране, обаче, при създаване на конзолна програма Visual Studio ползва първия начин, който можем по желание да редактираме на ръка и да изтрием частта с параметрите **`string[] args`**.
-
-Натискаме [**Enter**] след **отварящата скоба** **`{`** и **започваме да пишем**. Кодът на програмата се пише **отместен навътре**, като това е част от оформянето на текста, за по-голямо удобство при повторен преглед и/или дебъгване.
-
-![](assets/chapter-1-images/01.Hello-csharp-03.png)
-
-Пишем следната команда:
-
-```csharp
-Console.WriteLine("Hello C#");
-```
-
-Ето как трябва да изглежда нашата програма във Visual Studio:
-
-![](assets/chapter-1-images/01.Hello-csharp-04.png)
-
-Командата **`Console.WriteLine("Hello C#")`** на езика C# означава да изпълним отпечатване (**`WriteLine(…)`**) върху конзолата (**`Console`**) и да отпечатаме текстово съобщение **`Hello C#`**, което трябва да оградим с кавички, за да поясним, че това е текст. В края на всяка команда на езика C# се слага символът **`;`** и той указва, че командата свършва на това място (т.е. не продължава на следващия ред).
-
-Тази команда много типична за програмирането: указваме да се намери даден **обект** (в случая конзолата) и върху него да се изпълни някакво **действие** (в случая печатане на нещо, което се задава в скоби). По-техническо обяснено, извикваме метода **`WriteLine(…)`** от класа **`Console`** и му подаваме като параметър текстов литерал **`"Hello C#"`**.
-
-### Стартиране на програмата
-
-За стартиране на програмата натискаме [**Ctrl + F5**]. Ако няма грешки, програмата ще се изпълни. Резултатът ще се изпише на конзолата (в черния прозорец):
-
-![](assets/chapter-1-images/01.Hello-csharp-05.png)
-
-Забележете, че стартираме с **[Ctrl+F5]**, а не само с **[F5]** или с бутона за стартиране във Visual Studio. Ако ползваме **[F5]**, програмата ще се изпълни за кратко и веднага след това черният прозорец ще изчезне и няма да видим резултата.
-
-Всъщност, изходът от програмата е следното текстово съобщение:
-
-```csharp
-Hello C#
-```
-
-Съобщението "**Press any key to continue . . .**" се изписва допълнително на най-долния ред на конзолата от Visual Studio след като програмата завърши, за да ни подкани да видим резултата от изпълнението на програмата и да натиснем клавиш, за да затворим конзолата.
-
-### Тестване на програмата в Judge системата
-
-Тестването на задачите от тази книга е автоматизирано и се осъществява през Интернет, от сайта на **Judge системата**: [https://judge.softuni.bg](https://judge.softuni.bg). Оценяването на задачите се извършва на момента от системата. Всяка задача минава поредица от тестове, като всеки успешно преминат тест дава предвидените за него точки. Тестовете, които се подават на задачите, са скрити.
-
-Горната програма може да тестваме тук: [https://judge.softuni.bg/Contests/Practice/Index/503#0](https://judge.softuni.bg/Contests/Practice/Index/503#0). Поставяме целия сорс код на програмата в черното поле и избираме **C# code**, както е показано тук:
-
-![](/assets/chapter-1-images/01.Hello-csharp-06.png)
-
-Изпращаме решението за оценяване с бутона [**Изпрати**]. Системата връща резултат след няколко секунди в таблицата с изпратени решения. При необходимост може да натиснем бутона за обновяване на резултатите **[refresh]** в горната дясна част на таблицата с изпратени за проверка решения:
-
-![](assets/chapter-1-images/01.Hello-csharp-07.png)
-
-В таблицата с изпратените решения judge системата ще покаже един от следните **възможни резултати**:
-* **Брой точки** (между 0 и 100), когато предаденият код се компилира успешно (няма синтактични грешки) и може да бъде тестван.
- - При **вярно решение** всички тестове са маркирани в зелено и получаваме **100 точки**.
- - При **грешно решение** някои от тестовете са маркирани в червено и получаваме непълен брой точки или 0 точки.
-* При грешна програма ще получим **съобщение за грешка** по време на компилация.
-
-### Как да се регистрирам в SoftUni Judge?
-
-Използваме идентификацията си (username + password) за сайта softuni.bg. Ако нямате SoftUni регистрация, направете си. Отнема само минутка - стандартна регистрация в Интернет сайт.
-
-## Тествайте програмите за свирене на ноти
-
-Сега, след като вече **знаете как да изпълнявате програми**, можете да тествате примерните програми по-горе, които свирят музикални ноти. Позабавлявайте се, пробвайте тези програми. Пробвайте да ги промените и да си поиграете с тях. Заменете командата **`Console.WriteLine("Hello C#");`** с команда **`Console.Beep(432, 500);`** и стартирайте програмата. Проверете дали ви е включен звука на компютъра и дали е усилен. Ако работите в онлайн среда за разработка, няма да чуете звук, защото програмата не се изпълнява на вашия компютър, а накъде другаде.
-
-
-## Типични грешки в C# програмите
-
-Една от често срещаните грешки при начинаещите е **писането извън тялото на ``Main()`` метода**, защото интегрираната среда или компилаторът не биха могли правилно да разчетат зададените команди в програмата. Ето пример за грешно написана програма:
-```csharp
-static void Main(string[] args)
-{
-}
-Console.WriteLine("Hello C#");
-```
-
-Друга грешка е бъркането на **главни и малки букви**, а те имат значение при извикване на командите и тяхното правилно функциониране. Ето пример за такава грешка:
-```csharp
-static void Main(string[] args)
-{
- Console.Writeline("Hello C#");
-}
-```
-
-В горния пример **`Writeline`** е изписано грешно и трябва да се поправи на **`WriteLine`**.
-
-Липсата на **точка и запетая** (**`;`**) в края на командите е един от вечните проблеми на начинаещия програмист. Пропускането на този знак води до **неправилно функциониране на програмата** и **често проблемът остава незабелязан**. Ето примерен грешен код:
-
-```csharp
-static void Main(string[] args)
-{
- Console.Writeline("Hello C#")
-}
-```
-
-Липсваща **кавичка** или **липса на отваряща или затваряща скоба** също може да се окажат проблеми. Както и при точката и запетаята, така и тук проблемът води до **неправилно функциониране на програмата** или въобще до нейното неизпълнение. Този пропуск трудно се забелязва при по-обемен код. Ето пример за грешна програма:
-
-```csharp
-static void Main(string[] args)
-{
- Console.WriteLine("Hello C#);
-}
-```
-
-Тази програма ще даде **грешка при опит за компилация** и стартиране и даже още преди това кодът ще бъде подчертан, за да се насочи вниманието на програмиста към грешката, която е допуснал (пропуснатата затваряща кавичка):
-
-![](assets/chapter-1-images/01.Hello-csharp-08.png)
-
-
-## Какво научихме от тази глава?
-
-На първо място научихме **какво е програмирането** - **задаване на команди, изписани на компютърен език**, които машината разбира и може да изпълни. Разбрахме още какво е **компютърната програма** - тя представлява **поредица от команди**, подредени една след друга. Запознахме се с **езика за програмиране C#** на базисно ниво и как **да създаваме прости конзолни програми** с Visual Studio. Проследихме и **структурата на програмния код в езика C#**, като например, че командите главно се задават в секцията **``static void Main(string[] args)``** между **отварящата и затварящата къдрава скоба**. Видяхме как да печатаме с **`Console.WriteLine(…)`** и как да стартираме програмата си с [**Ctrl + F5**]. Научихме се да тестваме кода си в **SoftUni Judge**.
-
-Добра работа! Да се захващаме с **упражненията**. Нали не сте забравили, че програмиране се учи с много писане на код и решаване на задачи? Да решим няколко задачи, за да затвърдим наученото.
-
-
-## Упражнения: първи стъпки в коденето
-
-Добре дошли в упражненията. Сега ще напишем няколко конзолни програми, с които ще направим още няколко първи стъпки в програмирането, след което ще покажем как можем да програмираме нещо по-сложно - програми с графичен и уеб потребителски интерфейс.
-
-### Задача: конзолна програма “Expression”
-
-Да се напише конзолна C# програма, която **пресмята** и **отпечатва** стойността на следния числен израз:
-
-
(3522 + 52353) * 23 - (2336 * 501 + 23432 - 6743) * 3
-
-Забележка: **не е разрешено да се пресметне стойността предварително** (например с Windows Calculator).
-
-#### Насоки и подсказки
-
-Правим **нов C# конзолен проект** с име "**Expression**". Намираме метода **``static void Main(string[] args)``** и **влизаме в неговото тяло** между **`{`** и **`}`**. След това трябва да **напишем кода**, който да изчисли горния числен израз и да отпечата на конзолата стойността му. Подаваме горния числен израз в скобите на командата **``Console.WriteLine(…)``**:
-
-![](assets/chapter-1-images/02.Expression-01.png)
-
-Стартираме програмата с [**Ctrl+F5**] и проверяваме дали резултатът е същия като на картинката:
-
-![](assets/chapter-1-images/02.Expression-02.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/503#1](https://judge.softuni.bg/Contests/Practice/Index/503#1).
-
-![](assets/chapter-1-images/02.Expression-03.png)
-
-
-### Задача: числата от 1 до 20
-
-Да се напише C# конзолна програма, която **отпечатва числата от 1 до 20** на отделни редове на конзолата.
-
-#### Насоки и подсказки
-
-Създаваме **конзолно C# приложение** с име “**Nums1To20**“:
-
-![](/assets/chapter-1-images/03.Numbers-1-to-20-01.png)
-
-В **`static void Main()`** метода пишем 20 команди **``Console.WriteLine(…)``**, всяка на отделен ред, за да отпечатаме числата от 1 до 20 едно след друго. По-досетливите от вас, сигурно се питат дали няма по-умен начин. Спокойно, има, но за него по-късно.
-
-![](assets/chapter-1-images/03.Numbers-1-to-20-02.png)
-
-Сега **стартираме програмата** и поверяваме дали резултатът е какъвто се очаква да бъде:
-```
-1
-2
-…
-20
-```
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/503#2](https://judge.softuni.bg/Contests/Practice/Index/503#2).
-
-Сега помислете дали може да напишем програмата по **по-умен начин**, така че да не повтаряме 20 пъти една и съща команда. Потърсете в Интернет информация за "**[for loop C#](https://www.google.bg/search?q=for+loop+C%23&oq=for+loop+C%23)**".
-
-
-### Задача: триъгълник от 55 звездички
-
-Да се напише C# конзолна програма, която **отпечатва триъгълник от 55 звездички**, разположени на 10 реда:
-
-```
-*
-**
-***
-****
-*****
-******
-*******
-********
-*********
-**********
-```
-
-#### Насоки и подсказки
-
-Създаваме **ново конзолно C# приложение** с име “**TriangleOf55Stars**”. В него трябва да напишем код, който печата триъгълника от звездички, например чрез 10 команди, като посочените по-долу:
-```csharp
-Console.WriteLine("*");
-Console.WriteLine("**");
-…
-```
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/503#3](https://judge.softuni.bg/Contests/Practice/Index/503#3).
-
-Опитайте да **подобрите решението**, така че да няма много повтарящи се команди. Може ли това да стане с **`for`** цикъл? Успяхте ли да намерите умно решение (например с цикъл) на предната задача? При тази задача може да се ползва нещо подобно, но малко по-сложно (два цикъла един в друг). Ако не успеете, няма проблем, ще учим цикли след няколко глави и ще си спомните за тази задача тогава.
-
-
-### Задача: лице на правоъгълник
-
-Да се напише C# програма, която **прочита** от конзолата **две числа a и b**, **пресмята** и **отпечатва** лицето на правоъгълник със страни **a** и **b**.
-
-#### Примерен вход и изход
-
-| a | b | area |
-| :---: | :---: | :---: |
-| 2 | 7 | 14 |
-| 7 | 8 | 56 |
-| 12 | 5 | 60 |
-
-#### Насоки и подсказки
-
-Правим нова **конзолна C# програма**. За да **прочетем двете числа**, използваме следните две команди:
-
-![](assets/chapter-1-images/05.Rectangle-area-01.png)
-
-Остава да се допише програмата по-горе, за да пресмята лицето на правоъгълника и да го отпечата. Използвайте познатата ни вече команда **`Console.WriteLine()`** и й подайте в скобите произведението на числата **a** и **b**. В програмирането умножението се извършва с оператора **`*`**.
-
-#### Тествайте решението си
-
-Тествайте решението си с няколко примера. Трябва да получите резултат, подобен на този (въвеждаме 2 и 7 като вход и програмата отпечатва като резултат 14 - тяхното произведение):
-```
-2
-7
-14
-```
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/503#4](https://judge.softuni.bg/Contests/Practice/Index/503#4).
-
-
-### \* Задача: квадрат от звездички
-
-Да се напише C# конзолна програма, която **прочита** от конзолата **цяло положително число N** и **отпечатва** на конзолата **квадрат от N звездички**, като в примерите по-долу.
-
-#### Примерен вход и изход
-
-| Вход | Изход | Вход | Изход | Вход | Изход |
-|-----|-----------|-----|-----------|-----|----------|
-| 3 |
\*\*\*
\* \*
\*\*\*
| 4 |
\*\*\*\*
\* \*
\* \*
\*\*\*\*
| 5 |
\*\*\*\*\*
\* \*
\* \*
\* \*
\*\*\*\*\*
|
-
-#### Насоки и подсказки
-
-Правим нова **конзолна C# програма**. За да прочетем числото N (2 ≤ N ≤100), използваме следния код:
-
-![](/assets/chapter-1-images/06.Square-of-stars-01.png)
-
-Да се допише програмата по-горе, за да отпечатва квадрат, съставен от звездички. Може да се наложи да се използват **`for`** цикли. Потърсете информация в Интернет.
-
-**Внимание**: тази задача е по-трудна от останалите и нарочно е дадена сега и е обозначена със звездичка, за да ви провокира да потърсите информация в Интернет. Това е едно от най-важните умения, което трябва да развивате докато учите програмирането: **да търсите информация в Интернет**. Това ще правите всеки ден, ако работите като програмисти, така че не се плашете, а се опитайте. Ако имате трудности, можете да потърсите помощ и в SoftUni форума: https://softuni.bg/forum.
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/503#5](https://judge.softuni.bg/Contests/Practice/Index/503#5).
-
-
-## Конзолни, графични и уеб приложения
-
-При **конзолните приложения** (Console Applications), както и сами можете да се досетите, **всички операции** за четене на вход и печатане на изход се **извършват през конзолата**. Там се **въвеждат входните данни**, които се прочитат от приложението, там се **отпечатват и изходните данни** след или по време на изпълнение на програмата.
-
-Докато конзолните приложения **ползват текстовата конзола**, уеб приложенията (Web Applications) **използват уеб-базиран потребителски интерфейс**. За да се **постигне тяхното изпълнение** са необходими две неща - **уеб сървър** и **уеб браузър**, като **браузърът** играе главната роля по **визуализация на данните и взаимодействието с потребителя**. Уеб приложенията са много по-приятни за потребителя, изглеждат визуално много по-добре, използват се мишка и докосване с пръст (при таблети и телефони), но зад всичко това стои програмирането. И затова **трябва да се научим да програмираме** и вече направихме първите си съвсем малки стъпки.
-
-Графичните (GUI) приложения имат **визуален потребителски интерфейс**, директно върху вашия компютър или мобилно устройство, без да е необходим уеб браузър. Графичните приложения (настолни приложения или, иначе казано, desktop apps) **се състоят от един или повече графични прозореца**, в които се намират определени **контроли** (текстови полета, бутони, картинки, таблици и други), **служещи за диалог** с потребителя по по-интуитивен начин. Подобни са и мобилните приложения във вашия телефон и таблет: ползваме форми, текстови полета, бутони и други контроли и ги управляване чрез програмен код. Нали затова се учим сега да пишем код: **кодът е навсякъде в разработката на софтуер**.
-
-
-## Упражнения: графични и уеб приложения
-
-Сега предстои да направим едно просто **уеб приложение** и едно просто **графично приложение**, за да можем да надникнем в това, какво ще можем да създаваме като напреднем с програмирането и разработката на софтуер. Няма да разглеждаме детайлите по използваните техники и конструкции из основи, а само ще хвърлим поглед върху подредбата и функционалността на създаденото от нас. След като напреднем със знанията си, ще бъдем способни да правим големи и сложни софтуерни приложения и системи. Надяваме се примерите по-долу **да ви запалят интереса**, а не да ви откажат.
-
-
-### Задача: графично приложение „Суматор за числа“
-
-Да се напише **графично (GUI) приложение**, което **изчислява сумата на две числа**:
-
-![](assets/chapter-1-images/07.Numbers-sum-01.png)
-
-При въвеждане на две числа в първите две текстови полета и натискане на бутона [**Calculate**] се изчислява тяхната сума и резултатът се показва в третото текстово поле. За нашето приложение ще използваме **технологията Windows Forms**, която позволява създаване на **графични приложения за Windows**, в среда за разработка **Visual Studio** и с **език** за програмиране **C#**.
-
-Във Visual Studio създаваме **нов C# проект от тип „Windows Forms Application“**:
-
-![](assets/chapter-1-images/07.Numbers-sum-02.png)
-
-При създаването на Windows Forms приложение ще се появи **редактор за потребителски интерфейс**, в който могат да се слагат **различни визуални елементи** (например кутийки с текст и бутони):
-
-![](assets/chapter-1-images/07.Numbers-sum-03.png)
-
-Изтегляме от лентата вляво (Toolbox) **три текстови полета** (**`TextBox`**), **два надписа** (**`Label`**) и **един бутон** (**`Button`**), след което ги подреждаме в прозореца на приложението. След това **променяме имената на всяка от контролите**. Това става от **прозорчето “Properties”** вдясно, чрез промяна на полето (**`Name`**):
-
-![](assets/chapter-1-images/07.Numbers-sum-04.png)
-
-* Имена на текстовите полета: **`textBox1`**, **`textBox2`**, **`textBoxSum`**
-* Име на бутона: **`buttonCalculate`**
-* Име на формата: **`FormCalculate`**
-
-**Променяме заглавията** (**`Text`** свойството) на контролите:
-
-* buttonCalculate -> Calculate
-* label1 -> +
-* label2 -> =
-* Form1 -> Sumator
-
-![](assets/chapter-1-images/07.Numbers-sum-05.png)
-
-**Преоразмеряваме и подреждаме контролите**, за да изглеждат по-добре:
-
-![](assets/chapter-1-images/07.Numbers-sum-06.png)
-
-Опитваме да пуснем приложението с [**Ctrl+F5**]. То би трябвало да стартира, но да **не функционира напълно**, защото не сме написали какво се случва при натискане на бутона.
-
-![](assets/chapter-1-images/07.Numbers-sum-07.png)
-
-Сега е време да напишем кода, който **сумира числата** от първите две полета и **показва резултата** в третото поле. За целта кликваме **два пъти върху бутона [Calculate]**. Ще се появи място, в което да напишем какво да се случва при натискане на бутона:
-
-![](assets/chapter-1-images/07.Numbers-sum-08.png)
-
-Написваме следния C# код между отварящата и затварящата скоба **`{ }`**, където е курсорът:
-
-![](assets/chapter-1-images/07.Numbers-sum-09.png)
-
-Този код **взима първото число** от полето **`textBox1`** и го запазва **в променливата `num1`**, запазва **второто число** от полето **`textBox2`** в **променливата `num2`**, след това **сумира `num1` и `num2` в променливата `sum`** и накрая **извежда текстовата стойност на променливата `sum`** в полето **`textBoxSum`**.
-
-Стартираме отново програмата с [**Ctrl+F5**] и проверяваме дали работи коректно. Правим опит да сметнете **4 + 5**, а след това **-12.5 + 1.3**:
-
-![](assets/chapter-1-images/07.Numbers-sum-10.png) ![](/assets/chapter-1-images/07.Numbers-sum-11.png)
-
-Пробваме и с **невалидни числа**, напр. “**aaa**” и “**bbb**”. Изглежда има проблем:
-
-![](assets/chapter-1-images/07.Numbers-sum-12.png) ![](/assets/chapter-1-images/07.Numbers-sum-13.png)
-
-Проблемът идва от **прехвърлянето на текстово поле в число**. Ако стойността в полето **не е число, програмата дава грешка**. Можем да поправим кода, за да коригираме този проблем:
-
-![](assets/chapter-1-images/07.Numbers-sum-14.png)
-
-Горният код **прихваща грешките при работа с числа** (хваща изключенията) и в случай на грешка **извежда стойност `error`** в полето с резултата. Стартираме отново програмата с [**Ctrl+F5**] и я пробваме дали работи. Този път **при грешно число резултатът е `error`** и програмата не се чупи:
-
-![](assets/chapter-1-images/07.Numbers-sum-15.png) ![](/assets/chapter-1-images/07.Numbers-sum-16.png)
-
-Сложно ли е? Нормално е да е сложно, разбира се. Тъкмо започваме да навлизаме в програмирането. Примерът по-горе изисква още много знания и умения, които ще развиваме в тази книга и даже и след нея. Просто си позволете да се позабавлявате с desktop програмирането. Ако не тръгва нещо, гледайте **видеото в началото на тази глава** или питайте във **форума на SoftUni**: https://softuni.bg/forum. Или продължете смело напред към следващия пример или към следващата глава от книгата. Ще дойде време и ще ви е лесно, но наистина трябва да вложите **усърдие и постоянство**. Програмирането се учи бавно и с много, много практика.
-
-
-### Уеб приложение: суматор за числа
-
-Сега ще напишем нещо още по-сложно, но и по-интересно: уеб приложение, което **изчислява сумата на две числа**. При **въвеждане на две числа** в първите две текстови полета и натискане на бутона [**Calculate**] се **изчислява тяхната сума** и резултатът се показва в третото текстово поле.
-
-Обърнете внимание, че ще създадем **уеб-базирано приложение**. Това е приложение, което е достъпно през уеб браузър, точно както любимата ви уеб поща или новинарски сайт. Уеб приложението ще има сървърна част (back-end), която е написана на езика C# с технологията ASP.NET MVC и клиентска част (front-end), която е написана на езика HTML (това е език за визуализация на информация в уеб браузър).
-Уеб приложението се очаква да изглежда приблизително по следния начин:
-
-![](assets/chapter-1-images/08.Numbers-sum-web-01.png)
-
-За разлика от конзолните приложения, които четат и пишат данните си във вид на текст на конзолата, уеб приложенията имат **уеб базиран потребителски интерфейс**. Уеб приложенията се **зареждат от някакъв Интернет адрес** (URL) чрез стандартен уеб браузър. Потребителите пишат входните данни в страница, визуализирана от уеб браузъра, данните се обработват на уеб сървър и резултатите се показват отново в страницата в уеб браузъра. За нашето уеб приложение ще използваме **технологията ASP.NET MVC**, която позволява създаване на **уеб приложения с езика за програмиране C#** в средата за разработка **Visual Studio**.
-
-Във Visual Studio създаваме **нов C# проект от тип „ASP.NET Web Application“** с име **WebApp**:
-
-![](assets/chapter-1-images/08.Numbers-sum-web-02.png)
-
-Избираме **тип** на приложението - **“MVC”**:
-
-![](assets/chapter-1-images/08.Numbers-sum-web-03.png)
-
-Намираме файла **`Views\Home\Index.cshtml`**. В него се намира **изгледът (view) за главната страница** на нашето уеб приложението:
-
-![](assets/chapter-1-images/08.Numbers-sum-web-04.png)
-
-Изтриваме стария код от **файла `Index.cshtml`** и пишем следния код:
-
-![](assets/chapter-1-images/08.Numbers-sum-web-05.png)
-
-
-Този код **създава една уеб форма с три текстови полета и един бутон в нея**. В полетата се зареждат стойности, които се изчисляват предварително в обекта **`ViewBag`**. Указано е, че при натискане на бутона [**Calculate**] ще се извика действието **`/home/calculate` (действие `calculate` от `home` контролера)**.
-
-Ето как трябва да изглежда **файлът `Index.cshtml`** след промяната:
-
-![](assets/chapter-1-images/08.Numbers-sum-web-06.png)
-
-Остава да се напише **действието** (action), което **сумира числата при натискане на бутона** [**Calculate**]. Отваряме файла **`Controllers\HomeController.cs`** и добавяме следния код в тялото на **`HomeController`** класа:
-
-![](assets/chapter-1-images/08.Numbers-sum-web-07.png)
-
-Този код осъществява действието “**calculate**”. То приема два параметъра **`num1`** и **`num2`** и ги записва в обекта **`ViewBag`**, след което **изчислява и записва** тяхната сума. Записаните във **`ViewBag`** стойности след това **се използват от изгледа**, за да се покажат в **трите текстови полета** във формата за сумиране на числа в уеб страницата от приложението.
-
-Ето как трябва да изглежда **файлът `HomeController.cs`** след промяната:
-
-![](assets/chapter-1-images/08.Numbers-sum-web-08.png)
-
-Приложението е готово. Можем да го стартираме с [**Ctrl+F5**] и да тестваме дали работи:
-
-![](assets/chapter-1-images/08.Numbers-sum-web-09.png)
-
-Страшно ли изглежда? **Не се плашете!** Имаме да учим още много, за да достигнем ниво на знания и умения, за да пишем свободно уеб-базирани приложения, като в примера по-горе и много по-големи и по-сложни. Ако не успеете да се справите, няма страшно, продължете спокойно напред. След време ще си спомняте с усмивка колко непонятен и вълнуващ е бил първият ви сблъсък с уеб програмирането. Ако имате проблеми с примера по-горе, **гледайте видеото** в началото на тази глава. Там приложението е направено на живо стъпка по стъпка с много обяснения. Или питайте във **форума на SoftUni**: https://softuni.bg/forum.
-
-Целта на горните два примера (графично desktop приложение и уеб приложение) не е да се научите, а да се докоснете по-надълбоко до програмирането, **да разпалите интереса си** към разработката на софтуер и да се вдъхновите да учите здраво. **Имате да учите още много**, но пък е интересно, нали?
diff --git a/chapter-02-simple-calculations-exam-problems.md b/chapter-02-simple-calculations-exam-problems.md
deleted file mode 100644
index 7d765d02d..000000000
--- a/chapter-02-simple-calculations-exam-problems.md
+++ /dev/null
@@ -1,469 +0,0 @@
-# Глава 2.2. Прости пресмятания с числа – изпитни задачи
-
-В предходната глава се запознахме със системната конзола и как да работим с нея - как да **прочетем число** от конзолата и как да **отпечатаме резултат** на конзолата. Разгледахме основните аритметични операции и накратко споменахме типовете данни. В настоящата глава ще упражним и затвърдим наученото досега, като разгледаме няколко **по-сложни задачи**, давани на изпити.
-
-## Четене на числа от конзолата
-
-Преди да преминем към задачите, да си припомним най-важното от изучавания материал от предходната тема. Ще започнем с четенето на числа от конзолата.
-
-### Четене на цяло число
-
-Необходима ни е променлива, в която да запазим числото (напр. **`num`**), и да използваме стандартната команда за четене на данни от конзолата в съчетание с функцията **`int.Parse(…)`**, която конвертира текст в число:
-
-```csharp
-var num = int.Parse(Console.ReadLine());
-```
-
-### Четене на дробно число
-
-По същия начин, както четем цяло число, но този път ще използваме функцията **`double.Parse(…)`**:
-
-```csharp
-var num = double.Parse(Console.ReadLine());
-```
-
-## Извеждане на текст по шаблон (placeholder)
-
-**Placeholder** представлява израз, който ще бъде заменен с конкретна стойност при отпечатване. Методите **`Console.Write(…)`** / **`WriteLine(…)`** поддържат печатане на текст по шаблон, като първият аргумент, който трябва да подадем, е форматиращият низ, следван от броя аргументи, равен на броя на плейсхолдърите.
-
-```csharp
-Console.WriteLine("You are {0} {1}, a {2}-years old person from {3}.",
- firstName, lastName, age, town);
-```
-
-## Аритметични оператори
-
-Да си припомним основните аритметични оператори за пресмятания с числа.
-
-### Оператор +
-
-```csharp
-var result = 3 + 5; // резултатът е 8
-```
-
-### Оператор -
-
-```csharp
-var result = 3 - 5; // резултатът е -2
-```
-
-### Оператор *
-
-```csharp
-var result = 3 * 5; // резултатът е 15
-```
-
-### Оператор /
-
-```csharp
-var result = 7 / 3; // резултатът е 2 (целочислено деление)
-var result2 = 5 / 2.0; // резултатът е 2.5 (дробно деление)
-```
-
-## Конкатенация
-
-При използване на оператора **`+`** между променливи от тип текст (или между текст и число) се извършва т.нар. конкатенация (слепване на низове).
-
-```csharp
-var firstName = "Ivan";
-var lastName = "Ivanov";
-var age = 19;
-var str = firstName + " " + lastName + " is " + age + " years old";
-// Ivan Ivanov is 19 years old
-```
-
-
-## Изпитни задачи
-
-Сега, след като си припомнихме как се извършват пресмятания с числа и как се четат и печатат числа на конзолата, да минем към задачите. Ще решим няколко **задачи от приемен изпит** за кандидатстване в SoftUni.
-
-
-## Задача: учебна зала
-
-**Учебна зала** има правоъгълен размер **l** на **w** метра, без колони във вътрешността си. Залата е разделена на две части – лява и дясна, с коридор - приблизително по средата. В лявата и в дясната част има **редици с бюра**. В задната част на залата има голяма **входна врата**. В предната част на залата има **катедра** с подиум за преподавателя. Едно **работно място** заема **70 на 120 cm** (маса с размер 70 на 40 cm + място за стол и преминаване с размер 70 на 80 cm). **Коридорът** е широк поне **100 cm**. Изчислено е, че заради **входната врата** (която е с отвор 160 cm) **се губи точно 1 работно място**, а заради **катедрата** (която е с размер 160 на 120 cm) се губят точно **2 работни места**. Напишете програма, която въвежда размери на учебната зала и изчислява **броя работни места в нея** при описаното разположение (вж. фигурата).
-
-### Входни данни
-
-От конзолата се четат **2 числа**, по едно на ред: **l** (дължина в метри) и **w** (широчина в метри).
-
-Ограничения: **3 ≤ w ≤ l ≤ 100**.
-
-### Изходни данни
-
-Да се отпечата на конзолата едно цяло число: **броят места** в учебната зала.
-
-### Примерен вход и изход
-
-| Вход | Изход | Чертеж |
-|---------|-------|--------|
-|15
8.9 |129 | ![](/assets/chapter-2-2-images/01.Training-lab-01.png) |
-|8.4
5.2 |39 | ![](/assets/chapter-2-2-images/01.Training-lab-02.png) |
-
-#### Пояснения към примерите
-
-В първия пример залата е дълга 1500 cm. В нея могат да бъдат разположени **12 реда** (12 \* 120 cm = 1440 + 60 cm остатък). Залата е широка 890 cm. От тях 100 cm отиват за коридора в средата. В останалите 790 cm могат да се разположат по **11 бюра на ред** (11 \* 70 cm = 770 cm + 20 cm остатък). **Брой места = 12 * 11 - 3** = 132 - 3 = **129** (имаме 12 реда по 11 места = 132 минус 3 места за катедра и входна врата).
-
-Във втория пример залата е дълга 840 cm. В нея могат да бъдат разположени **7 реда** (7 \* 120 cm = 840, без остатък). Залата е широка 520 cm. От тях 100 cm отиват за коридора в средата. В останалите 420 cm могат да се разположат по **6 бюра на ред** (6 \* 70 cm = 420 cm, без остатък). **Брой места = 7 * 6 - 3** = 42 - 3 = **39** (имаме 7 реда по 6 места = 42 минус 3 места за катедра и входна врата).
-
-### Насоки и подсказки
-
-Опитайте първо сами да решите задачата. Ако не успеете, разгледайте насоките и подсказките.
-
-#### Идея за решение
-
-Както при всяка една задача по програмиране, е **важно да си изградим идея за решението ѝ**, преди да започнем да пишем код. Да разгледаме внимателно зададеното ни условие. Изисква се да напишем програма, която да изчислява броя работни места в една зала, като този брой е зависим от дължината и височината ѝ. Забелязваме, че те ще ни бъдат подадени като входни данни **в метри**, а информацията за това колко пространство заемат работните места и коридорът, ни е дадена **в сантиметри**. За да извършим изчисленията, ще трябва да използваме еднакви мерни единици, няма значение дали ще изберем да превърнем височината и дължината в сантиметри, или останалите данни в метри. За представеното тук решение е избрана първата опция.
-
-Следва да изчислим **колко колони и колко редици** с бюра ще се съберат. Колоните можем да пресметнем като **от широчината извадим необходимото място за коридора (100 cm)** и **разделим остатъка на 70 cm** (колкото е дължината на едно работно място). Редиците ще намерим като разделим **дължината на 120 cm**. И при двете операции може да се получи **реално число** с цяла и дробна част, **в променлива трябва да запазим обаче само цялата част**. Накрая умножаваме броя на редиците по този на колоните и от него изваждаме 3 (местата, които се губят заради входната врата и катедрата). Така ще получим исканата стойност.
-
-#### Избор на типове данни
-
-От примерните входни данни виждаме, че за вход може да ни бъде подадено реално число с цяла и дробна част, затова не е подходящо да избираме тип **`int`**, нека за тях използваме **`double`**. Изборът на тип за следващите променливи зависи от метода за решение, който изберем. Както всяка задача по програмиране, тази също има **повече от един начин на решение**. Тук ще бъдат показани два такива.
-
-#### Решение
-
-Време е да пристъпим към решението. Мислено можем да го разделим на три подзадачи:
-* **Прочитане на входните данни**.
-* **Извършване на изчисленията**.
-* **Извеждане на изход** на конзолата.
-
-Първото, което трябва да направим, е да прочетем входните данни от конзолата. С **`Console.ReadLine()`** четем стойностите от конзолата, а с функцията **`double.Parse(…)`** преобразуваме зададената стрингова (текстова) стойност в **`double`**.
-
-![](/assets/chapter-2-2-images/01.Training-lab-03.png)
-
-Нека пристъпим към изчисленията. Особеното тук е, че след като извършим делението, трябва да запазим в променлива само цялата част от резултата.
-
-
|
-Търсете в Google! Винаги, когато имаме идея как да решим даден проблем, но не знаем как да го изпишем на C#, или когато се сблъскаме с такъв, за който предполагаме, че много други хора са имали, най-лесно е да се справим като потърсим информация в Интернет. |
-
-
-В случая може да пробваме със следното търсене: "[***c# get whole number part of double***](https://www.google.com/?q=c%23+get+whole+number+part+of+double)". Откриваме, че едната възможност е да използваме метода **`Math.Truncate(…)`**. Тъй като той работи с променливи от тип **`double`**, за броя редици и колони създаваме променливи също от този тип.
-
-![](/assets/chapter-2-2-images/01.Training-lab-04.png)
-
-Втори вариант: както вече знаем, операторът за деление **`/`** има различно действие върху цели и реални числа. **При деление на целочислен с целочислен тип** (напр. **`int`**), **върнатият резултат е отново целочислен**. Следователно можем да потърсим как да преобразуваме реалните числа, които имаме като стойности за височината и широчината, в цели числа и след това да извършим делението.
-
-Тъй като в този случай може да се получи **загуба на данни**, идваща от премахването на дробната част, е необходимо преобразуването да стане **изрично** (explicit typecasting). Използваме оператора за преобразуване на данни **`(type)`**, като заменяме думата **type** с необходимия **тип данни** и го поставяме **преди променливата**. (повече за преобразуването на типовете данни можете да прочетете на [Светлин Наков, Веселин Колев и колектив: "Въведение в програмирането със C#", стр. 153-157](http://www.introprogramming.info/intro-csharp-book/read-online/glava3-operatori-i-izrazi/#_Toc298863977))
-
-![](/assets/chapter-2-2-images/01.Training-lab-05.png)
-
-С **`Console.WriteLine(…)`** отпечатваме резултата на конзолата.
-
-![](/assets/chapter-2-2-images/01.Training-lab-06.png)
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/505#0](https://judge.softuni.bg/Contests/Practice/Index/505#0).
-
-
-## Задача: зеленчукова борса
-
-Градинар продава реколтата от градината си на зеленчуковата борса. Продава **зеленчуци за N лева на килограм** и **плодове за M лева за килограм**. Напишете програма, която **да пресмята приходите от реколтата в евро** (ако приемем, че **едно евро** е равно на **1.94 лв.**).
-
-### Входни данни
-
-От конзолата се четат **4 числа**, по едно на ред:
-* Първи ред – Цена за килограм зеленчуци – число с плаваща запетая.
-* Втори ред – Цена за килограм плодове – число с плаваща запетая.
-* Трети ред – Общо килограми на зеленчуците – цяло число.
-* Четвърти ред – Общо килограми на плодовете – цяло число.
-
-**Ограничения: Всички числа ще са в интервала от 0.00 до 1000.00**
-
-### Изходни данни
-
-Да се отпечата на конзолата **едно число с плаваща запетая: приходите от всички плодове и зеленчуци в евро**.
-
-### Примерен вход и изход
-
-| Вход | Изход |
-|-----------|----------|
-|0.194
19.4
10
10|101 |
-
-**Пояснения към първия пример:**
-
-* Зеленчуците струват: 0.194 лв. \* 10 кг. = **1.94 лв.**
-* Плодовете струват: 19.4 лв. \* 10 кг. = **194 лв.**
-* Общо: **195.94 лв. = 101 евро**.
-
-| Вход | Изход |
-|-----------|----------------|
-|1.5
2.5
10
10|20.6185567010309|
-
-### Насоки и подсказки
-
-Първо ще дадем няколко разсъждения, а след това и конкретни насоки за решаване на задачата, както и съществената част от кода.
-
-#### Идея за решение
-
-Нека първо разгледаме зададеното ни условие. В случая, от нас се иска да пресметнем колко е **общият приход** от реколтата. Той е равен на **сбора от печалбата от плодовете и зеленчуците**, а тях можем да изчислим като умножим **цената на килограм по количеството им**. Входните данни са дадени в лева, а за изхода се изисква да бъде в евро. По условие 1 евро е равно на 1.94 лева, следователно за да получим исканата **изходна стойност, трябва да разделим сбора на 1.94**.
-
-#### Избор на типове данни
-
-След като сме изяснили идеята си за решаването на задачата, можем да пристъпим към избора на подходящи типове данни. Да разгледаме **входа**: дадени са **две цели числа** за общия брой килограми на зеленчуците и плодовете, съответно променливите, които декларираме, за да пазим техните стойности, ще бъдат от тип **`int`**. За цените на плодовете и зеленчуците е указано, че ще бъдат подадени **две числа с плаваща запетая**, т.е. променливите ще бъдат от тип **`double`**.
-
-Може да декларираме също две променливи, в които да пазим стойността на печалбата от плодовете и зеленчуците поотделно. Тъй като умножаваме променлива от тип **`int`** (общо килограми) с такава от тип **`double`** (цена), резултатът също трябва да бъде от тип **`double`**. Нека поясним това: по принцип **операторите работят с аргументи от един и същи тип**. Следователно, за да извършим операция като умножение върху два различна типа данни, ни се налага да ги преобразуваме към един и същ такъв. Когато в един израз има типове с различен обхват, преобразуването винаги се извършва към този с най-голям обхват, в този случай това е **`double`**. Тъй като няма опасност от загуба на данни, **преобразуването е неявно** (implicit) и става автоматично от компилатора.
-
-Като **изход** се изисква също **число с плаваща запетая**, т.е. резултата ще пазим в променлива от тип **`double`**.
-
-#### Решение
-
-Време е да пристъпим към решението. Мислено можем да го разделим на три подзадачи:
-* **Прочитане на входните данни**.
-* **Извършване на изчисленията**.
-* **Извеждане на изход** на конзолата.
-
-За да прочетем входните данни декларираме променливи, като внимаваме да ги именуваме по такъв начин, който да ни подсказва какви стойности съдържат променливите. С **`Console.ReadLine(…)`** четем стойностите от конзолата, а с функциите **`int.Parse(…)`** и **`double.Parse(…)`** преобразуваме зададената стрингова стойност съответно в **`int`** и **`double`**.
-
-![](/assets/chapter-2-2-images/02.Vegetable-market-01.png)
-
-Извършваме необходимите изчисления:
-
-![](/assets/chapter-2-2-images/02.Vegetable-market-02.png)
-
-В условието на задачата не е зададено специално форматиране на изхода, следователно трябва просто да изчислим исканата стойност и да я отпечатаме на конзолата. Както в математиката, така и в програмирането делението има приоритет пред събирането. За задачата обаче трябва първо да **сметнем сбора** на двете получени стойности и след това да **разделим на 1.94**. За да дадем предимство на събирането, може да използваме скоби. С **`Console.WriteLine(…)`** отпечатваме изхода на конзолата.
-
-![](/assets/chapter-2-2-images/02.Vegetable-market-03.png)
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/505#1](https://judge.softuni.bg/Contests/Practice/Index/505#1).
-
-
-## Задача: ремонт на плочки
-
-На площадката пред жилищен блок трябва **да се поставят плочки**. Площадката е с форма **на квадрат със страна N метра**. Плочките са **широки „W“ метра** и **дълги „L“ метра**. На площадката има една пейка с **ширина M метра и дължина O метра**. Под нея не е нужно да се слагат плочки. Всяка плочка се поставя за **0.2 минути**.
-
-Напишете програма, която **чете от конзолата размерите** на **площадката, плочките и пейката** и пресмята **колко плочки са необходими** да се покрие площадката и пресмята **времето за поставяне на всички плочки**.
-
-**Пример: площадка с размер 20 м.** има **площ 400 кв.м.**. **Пейка**, широка **1 м.** и дълга **2 м.**, заема площ **2 кв.м.** Една **плочка** е **широка 5 м.** и **дълга 4 м.** и има **площ = 20 кв.м.** **Площта**, която трябва да се покрие, е **400 – 2 = 398 кв.м.** Необходими са **398 / 20 = 19.90 плочки**. Необходимото **време** е **19.90 * 0.2 = 3.98 минути.**
-
-### Входни данни
-
-От конзолата се четат **5 числа**:
-
-* **N – дължината** на **страна** от **площадката** в интервала [**1 … 100**].
-* **W – широчината** на една **плочка** в интервала [**0.1 … 10.00**].
-* **L – дължината** на една **плочка** в интервала [**0.1 … 10.00**].
-* **М – широчината** на **пейката** в интервала [**0 … 10**].
-* **О – дължината** на **пейката** в интервала [**0 … 10**].
-
-### Изходни данни
-
-Да се отпечатат на конзолата **две числа**: **броя плочки**, необходим за ремонта и **времето за поставяне**, всяко на нов ред.
-
-### Примерен вход и изход
-
-| Вход | Изход |
-|---------------|------------|
-|20
5
4
1
2|19.9
3.98|
-
-**Обяснение към примера:**
-
-* **Обща площ** = 20 \* 20 = 400.
-* **Площ на пейката** = 1 \* 2 = 2.
-* **Площ за покриване** = 400 – 2 = 398.
-* **Площ на плочки** = 5 \* 4 = 20.
-* **Необходими плочки** = 398 \/ 20 = 19.9.
-* **Необходимо време** = 19.9 \* 0.2 = 3.98.
-
-| Вход | Изход |
-|-----------|--------------------|
-|40
0.8
0.6
3
5|3302.08333333333
660.416666666667|
-
-### Насоки и подсказки
-
-Нека да си направим чертеж, за да поясним условието на задачата. Той може да изглежда по следния начин:
-
-![](/assets/chapter-2-2-images/03.Change-tiles-01.png)
-
-#### Идея за решение
-
-Изисква се да пресметнем **броя плочки**, който трябва да се постави, както и **времето, за което това ще се извърши**. За да **изчислим броя**, е необходимо да сметнем **площта, която трябва да се покрие**, и да я **разделим на лицето на една плочка**. По условие площадката е квадратна, следователно общата площ ще намерим като умножим страната ѝ по стойността й **`N * N`**. След това пресмятаме **площта, която заема пейката**, също като умножим двете ѝ страни **`M * O`**. Като извадим площта на пейката от тази на цялата площадка, получаваме площта, която трябва да се ремонтира.
-
-Лицето на единична плочка изчисляваме като **умножим едната ѝ страна по другата** **`W * L`**. Както вече отбелязахме, сега трябва да **разделим площта за покриване на площта на една плочка**. По този начин ще разберем какъв е необходимият брой плочки. Него умножаваме по **0.2** (времето, за което по условие се поставя една плочка). Така вече ще имаме исканите изходни стойности.
-
-#### Избор на типове данни
-
-Дължината на страна от площадката, широчината и дължината на пейката ще бъдат дадени като **цели числа**, следователно, за да запазим техните стойности може да декларираме **променливи от тип `int`**. За широчината и дължината на плочките ще ни бъдат подадени реални числа (с цяла и дробна част), затова за тях ще използваме **`double`**. Изходът на задачата отново ще е реално число, т.е. променливите ще бъдат също от тип **`double`**.
-
-#### Решение
-
-Както и в предходните задачи, можем мислено да разделим решението на три части:
-* **Прочитане на входните данни**.
-* **Извършване на изчисленията**.
-* **Извеждане на изход** на конзолата.
-
-Първото, което трябва да направим, е да разгледаме **входните данни** на задачата. Важно е да внимаваме за последователността, в която са дадени. С **`Console.ReadLine(…)`** четем стойностите от конзолата, а с **`int.Parse(…)`** и **`double.Parse(…)`** преобразуваме зададената стрингова стойност, съответно в **`int`** и **`double`**.
-
-![](/assets/chapter-2-2-images/03.Change-tiles-02.png)
-
-След като сме инициализирали променливите и сме запазили съответните стойности в тях, пристъпваме към **изчисленията**. Тъй като стойностите на променливите **`n`**, **`a`** и **`b`**, с които работим, са запазени в променливи от тип **`int`**, за резултатите от изчисленията може да дефинираме **променливи също от този тип**.
-
-![](/assets/chapter-2-2-images/03.Change-tiles-03.png)
-
-Променливите **`w`** и **`h`** са от тип **`double`**, т.е. за **лицето на една плочка** създаваме променлива от същия тип. За финал **изчисляваме стойностите, които трябва да отпечатаме** на конзолата. **Броят** на необходимите **плочки** получаваме като **разделим площта, която трябва да се покрие, на площта на единична плочка**. При деление на две числа, от които **едното е реално**, резултатът е **реално число** с цяла и дробна част. Следователно, за да са коректни изчисленията ни, запазваме резултата в променлива от тип **`double`**. В условието на задачата не е зададено специално форматиране или закръгляне на изхода, затова просто отпечатваме стойностите с **`Console.WriteLine(…)`**.
-
-![](/assets/chapter-2-2-images/03.Change-tiles-04.png)
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/505#2](https://judge.softuni.bg/Contests/Practice/Index/505#2).
-
-
-## Задача: парички
-
-Преди време **Пешо си е купил биткойни**. Сега ще ходи на екскурзия из Европа **и ще му трябва евро**. Освен биткойни има **и китайски юани**. Пешо иска **да обмени парите си в евро** за екскурзията. Напишете програма, която **да пресмята колко евро може да купи спрямо следните валутни курсове**:
-* **1 биткойн = 1168 лева.**
-* **1 китайски юан = 0.15 долара.**
-* **1 долар = 1.76 лева.**
-* **1 евро = 1.95 лева.**
-
-Обменното бюро има **комисионна от 0 до 5 процента от крайната сума в евро**
-
-### Входни данни
-
-От конзолата се четат 3 числа:
-* На първия ред – **броят биткойни**. Цяло число в интервала [**0 … 20**].
-* На втория ред – **броят китайски юани**. Реално число в интервала [**0.00 … 50 000.00**].
-* На третия ред – **комисионната**. Реално число в интервала [**0.00 … 5.00**].
-
-### Изходни данни
-
-На конзолата да се отпечата 1 число - **резултатът от обмяната на валутите**. Не е нужно резултатът да се закръгля.
-
-### Примерен вход и изход
-
-| Вход | Изход |
-|---------------|------------|
-|1
5
5|569.668717948718|
-
-**Обяснение**:
-* 1 биткойн = 1168 лева
-* 5 юана = 0.75 долара
-* 0.75 долара = 1.32 лева
-* **1168 + 1.32 = 1169.32 лева = 599.651282051282 евро**
-* **Комисионна:** 5% от 599.651282051282 = **29.9825641025641**
-* **Резултат**: 599.651282051282 - 29.9825641025641 = **569.668717948718 евро**
-
-| Вход | Изход | Вход | Изход |
-|------------|------------------|--------------|------------------|
-|20
5678
2.4|12442.2442010256|7
50200.12
3|10659.4701177436|
-
-### Насоки и подсказки
-
-Нека отново помислим първо за начина, по който можем да решим задачата, преди да започнем да пишем код.
-
-#### Идея за решение
-
-Виждаме, че ще ни бъдат подадени **броят биткойни** и **броят китайски юани**. За **изходната стойност** е указано да бъде в **евро**. В условието са посочени и валутните курсове, с които трябва да работим. Забелязваме, че към евро можем да преобразуваме само сума в лева, следователно трябва **първо да пресметнем цялата сума, която Пешо притежава в лева**, и **след това да изчислим изходната стойност**.
-
-Тъй като ни е дадена информация за валутния курс на биткойни срещу лева, можем директно да направим това преобразуване. От друга страна, за да получим стойността на **китайските юани в лева**, трябва първо да ги **конвертираме в долари**, а след това **доларите - в лева**. Накрая ще **съберем двете получени стойности** и ще пресметнем на колко евро съответстват.
-
-Остава последната стъпка: да **пресметнем колко ще бъде комисионната** и да извадим получената сума от общата. Като комисионна ще ни бъде подадено **реално число**, което ще представлява определен **процент от общата сума**. Нека още в началото разделим подаденото число на 100, за да изчислим **процентната му стойност**. Нея ще умножим по сумата в евро, а резултатът ще извадим от същата тази сума. Получената сума ще отпечатаме на конзолата.
-
-#### Избор на типове данни
-
-**Биткойните** са дадени като **цяло число**, следователно за тяхната стойност може да декларираме **променлива от тип `int`**. Като брой **китайски юани и комисионна** ще получим **реално число**, следователно за тях използваме **`double`**. Тъй като **`double`** e типът данни с по-голям обхват, а **изходът** също ще бъде **реално число**, ще използваме него и за останалите променливи, които създаваме.
-
-#### Решение
-
-След като сме си изградили идея за решението на задачата и сме избрали структурите от данни, с които ще работим, е време да пристъпим към **писането на код**. Както и в предните задачи, можем да разделим решението на три подзадачи:
-* **Прочитане на входните данни**.
-* **Извършване на изчисленията**.
-* **Извеждане на изход** на конзолата.
-
-**Декларираме променливите**, които ще използваме, като отново внимаваме да изберем **смислени имена**, които подсказват какво съдържат те. Инициализираме техните стойности: с **`Console.ReadLine(…)`** четем подадените числа на конзолата и конвертираме въведения от потребителя стринг към **`int`** или **`double`**.
-
-![](/assets/chapter-2-2-images/04.Money-01.png)
-
-Извършваме необходимите изчисления:
-
-![](/assets/chapter-2-2-images/04.Money-02.png)
-
-![](/assets/chapter-2-2-images/04.Money-03.png)
-
-Накрая **пресмятаме стойността на комисионната** и я **изваждаме от сумата в евро**. Нека обърнем внимание на начина, по който можем да изпишем това: **`euro -= commission * euro`** e съкратен начин за изписване на **`euro = euro - (commission * euro)`**. В случая използваме **комбиниран оператор за присвояване** (**`-=`**), който **изважда стойността от операнда вдясно от този вляво**. Операторът за умножение (**`*`**) има **по-висок приоритет** от комбинирания оператор, затова изразът **`commission * euro`** се изпълнява първи, след което неговата стойност се изважда. (повече за операторите може да прочетете на [Светлин Наков, Веселин Колев и колектив: "Въведение в програмирането със C#", стр. 150](http://www.introprogramming.info/intro-csharp-book/read-online/glava3-operatori-i-izrazi/#_Toc298863965))
-
-В условието на задачата не е зададено специално форматиране или закръгляне на резултата, следователно трябва просто да изчислим изхода и да го отпечатаме на конзолата.
-
-![](/assets/chapter-2-2-images/04.Money-04.png)
-
-Нека обърнем внимание на нещо, което важи за всички задачи от този тип: разписано по този начин, решението на задачата е доста подробно. Тъй като условието като цяло не е сложно, бихме могли на теория да напишем един голям израз, в който директно след получаване на входните данни да сметнем изходната стойност. Напр., такъв израз би изглеждал ето така:
-
-![](/assets/chapter-2-2-images/04.Money-05.png)
-
-Този код би дал правилен резултат, **но се чете трудно**. Няма да ни е лесно да разберем какво прави и дали съдържа грешки, както и как да поправим някоя такава. По-добра практика е **вместо един сложен израз да напишем няколко прости** и да запишем резултатите от тях в променливи със подходящи имена. Така кодът е ясен и по-лесно променяем.
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/505#3](https://judge.softuni.bg/Contests/Practice/Index/505#3).
-
-
-## Задача: дневна печалба
-
-Иван е програмист в **американска компания** и **работи** от вкъщи **средно N дни в месеца**, като изкарва **средно по M долара на ден**. В края на годината Иван **получава бонус**, който е **равен на 2.5 месечни заплати. От спечеленото през годината му се удържат 25% данъци**. Напишете програма, която да **пресмята колко е чистата средна печалба на Иван на ден в лева**, тъй като той харчи изкараното в България. Приема се, че **в годината има точно 365 дни. Курсът на долара** спрямо лева ще **се чете от конзолата**.
-
-### Входни данни
-
-От конзолата се четат **3 числа**:
-* На първия ред – **работни дни в месеца**. Цяло число в интервала [**5 … 30**].
-* На втория ред – **изкарани пари на ден**. Реално число в интервала [**10.00 … 2000.00**].
-* На третия ред – **курсът на долара спрямо лева** /1 долар = X лева/. Реално число в интервала [**0.99 … 1.99**].
-
-### Изходни данни
-
-На конзолата **да се отпечата 1 число – средната печалба на ден в лева**. Резултатът да се **форматира до втората цифра след десетичния знак**.
-
-### Примерен вход и изход
-
-| Вход | Изход |
-|---------------|------------------|
-|21
75.00
1.59|74.61|
-
-**Обяснение**:
-* **1 месечна заплата** = 21 \* 75 = 1575 долара.
-* **Годишен доход** = 1575 \* 12 + 1575 \* 2.5 = 22837.5 долара.
-* **Данък** = 25% от 22837.5 = 5709.375 лева.
-* **Чист годишен доход** = 17128.125 долара = 27233.71875 лева.
-* **Средна печалба на ден** = 27233.71875 / 365 = 74.61 лева.
-
-| Вход | Изход | Вход | Изход |
-|-------------|------------------|-------------|------------------|
-|15
105
1.71|80.24|22
199.99
1.50|196.63|
-
-### Насоки и подсказки
-
-Първо да анализираме задачата и да измислим как да я решим. След това ще изберем типовете данни и накрая ще напишем кода на решението.
-
-#### Идея за решение
-
-Нека първо пресметнем **колко е месечната заплата** на Иван. Това ще направим като **умножим работните дни в месеца по парите**, които той печели на ден. **Умножаваме получения резултат** първо по 12, за да изчислим колко е заплатата му за 12 месеца, а след това и **по 2.5**, за да пресметнем бонуса. Като съберем двете получени стойности, ще изчислим **общия му годишен доход**. От него **трябва да извадим 25%**. Това може да направим като умножим общия доход по **0.25** и извадим резултата от него. Спрямо дадения ни курс **преобразуваме доларите в лева**, след което **разделяме резултата на дните в годината**, за които приемаме, че са 365.
-
-#### Избор на типове данни
-
-**Работните дни за месец** са дадени като **цяло число**, следователно за тяхната стойност може да декларираме променлива от **тип `int`**. За **изкараните пари**, както и за **курса на долара спрямо лева**, ще получим **реално число**, следователно за тях използваме **`double`**. Тъй като **`double`** e типът данни с **по-голям обхват**, а за изходната стойност също се изисква **реално число** (с цяла и дробна част), ще използваме него и за останалите променливи, които създаваме.
-
-#### Решение
-
-Отново: след като имаме идея как да решим задачата и сме помислили за типовете данни, с които ще работим, пристъпваме към **писането на програмата**. Както и в предходните задачи, можем да разделим решението на три подзадачи:
-* **Прочитане на входните данни**.
-* **Извършване на изчисленията**.
-* **Извеждане на изход** на конзолата.
-
-**Декларираме променливите**, които ще използваме, като отново се стараем да изберем **подходящи имена**. С **`Console.ReadLine(…)`** четем подадените числа на конзолата и **преобразуваме** въведения от потребителя стринг към **`int`** или **`double`** с **`int/double.Parse(…)`**.
-
-![](assets/chapter-2-2-images/05.Daily-earnings-01.png)
-
-Извършваме изчисленията:
-
-![](assets/chapter-2-2-images/05.Daily-earnings-02.png)
-
-Бихме могли да напишем израза, с който пресмятаме общия годишен доход, и без скоби. Тъй като умножението е операция с по-висок приоритет от събирането, то ще се извърши първо. Въпреки това **писането на скоби се препоръчва, когато използваме повече оператори**, защото така кодът става **по-лесно четим** и възможността да се допусне грешка е по-малка.
-
-Накрая остава да изведем резултата на конзолата. Забелязваме, че се **изисква форматиране на числената стойност до втория знак след десетичната точка**. За целта можем да използваме **placeholder, т.е. място, което ще бъде заместено с конкретна стойност при отпечатването**. В C# за **placeholder** се използва цифра, оградена с къдрави скоби. Тъй като **в програмирането броенето започва от 0**, изразът **`{0}`** означава, че на негово място ще бъде поставен първият подаден аргумент. Цяло или дробно число можем да форматираме със спецификаторите **F** или **f**. След него следва цяло положително число, което указва броя на знаците след десетичния знак (повече за форматирането може да прочетете на [Светлин Наков, Веселин Колев и колектив: "Въведение в програмирането със C#", стр. 155-158](http://www.introprogramming.info/intro-csharp-book/read-online/glava4-vhod-i-izhod-ot-konzolata/#_Toc298863992)):
-
-![](assets/chapter-2-2-images/05.Daily-earnings-03.png)
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/505#4](https://judge.softuni.bg/Contests/Practice/Index/505#4).
diff --git a/chapter-02-simple-calculations.md b/chapter-02-simple-calculations.md
deleted file mode 100644
index d9398ba6e..000000000
--- a/chapter-02-simple-calculations.md
+++ /dev/null
@@ -1,863 +0,0 @@
-# Глава 2.1. Прости пресмятания с числа
-
-В настоящата глава ще се запознаем със следните концепции и програмни техники:
-- Какво представлява **системната конзола**?
-- Как да **прочитаме числа** от системната конзола?
-- Как да работим с **типове данни и променливи**, които са ни необходими при обработка на числа и операциите между тях?
-- Как да **изведем** резултат (число) на системната конзола?
-- Как да извършваме прости **аритметични операции**: събиране, изваждане, умножение, деление, съединяване на низ?
-
-## Видео
-
-
-
-
-## Системна конзола
-
-Обикновено наричана само "**конзола**", системната, или още компютърната конзола, представлява устройството, чрез което подаваме команди на компютъра в текстов вид и получаваме резултатите от тяхното изпълнение отново като текст.
-
-В повечето случаи системната конзола представлява текстов терминал, т.е. приема и визуализира само **текст**, без графични елементи като например бутони, менюта и т.н. Обикновено изглежда като прозорец с черен цвят като този:
-
-![](/assets/chapter-2-images/00.Console-example.png)
-
-В повечето операционни системи **конзолата** е достъпна като самостоятелно приложение на което пишем конзолни команди. В Windows се нарича **Command Prompt**, а в Linux и Mac се нарича **Terminal**. В конзолата се изпълняват конзолни приложения. Те четат текстов вход от командния ред и печатат изхода си като текстов изход на конзолата. В настоящата книга ще се учим на програмиране като създаваме предимно **конзолни приложения**.
-
-## Четене на числа от конзолата
-
-За да прочетем **цяло** (не дробно) **число** от конзолата е необходимо да **декларираме променлива**, да посочим **типа на числото**, както и да използваме стандартната команда за четене на информация от системната конзола:
-
-```csharp
-var num = int.Parse(Console.ReadLine());
-```
-
-### Пример: пресмятане на лице на квадрат със страна **а**
-
-За пример да вземем следната програма, която прочита цяло число от конзолата, умножава го по него самото (вдига го на квадрат) и отпечатва резултата от умножението. Така можем да пресметнем лицето на квадрат по дадена дължина на страната:
-
-```csharp
-Console.Write("a = ");
-var a = int.Parse(Console.ReadLine());
-var area = a * a;
-Console.Write("Square area = ");
-Console.WriteLine(area);
-```
-
-Ето как би работила програмата при квадрат с размер на страната 3:
-
-![](/assets/chapter-2-images/00.Square-area-01.jpg)
-
-Опитайте да въведете грешно число, например "**hello**". Ще получите съобщение за грешка по време на изпълнение (exception). Това е нормално. По-късно ще разберем как можем да прихващаме такива грешки и да караме потребителят да въвежда число наново.
-
-#### Как работи примерът?
-
-Първият ред **`Console.Write("a = ");`** печата информативно съобщение, което подканва потребителя да въведе страната на квадрата **a**. След отпечатването курсорът остава на същия ред. Оставането на същия ред е по-удобно за потребителя, чисто визуално. Използва се **`Console.Write(…)`**, а не **`Console.WriteLine(…)`** и така курсорът остава на същия ред.
-
-Следващият ред **`var a = int.Parse(Console.ReadLine());`** прочита цяло число от конзолата. Всъщност първо се прочита текст (стринг) чрез **`Console.ReadLine()`** и след това се преобразува до цяло число (парсва се) чрез **`int.Parse(…)`**. Резултатът се записва в променлива с име **`a`**.
-
-Следващата команда **`var area = a * a;`** записва в нова променлива **`area`** резултата от умножението на **`a`** по **`a`**.
-
-Следващата команда **`Console.Write("Square area = ");`** отпечатва посочения текст, без да преминава на нов ред. Отново се използва **`Console.Write(…)`**, а не **`Console.WriteLine(…)`** и така курсорът остава на същия ред, за да може след това да се отпечата и изчисленото лице на квадрата.
-
-Последната команда **`Console.WriteLine(area);`** отпечатва изчислената стойност от променливата **`area`**.
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/504#0](https://judge.softuni.bg/Contests/Practice/Index/504#0).
-
-
-## Пресмятания в програмирането
-
-За компютрите знаем, че са машини, които обработват данни. Всички **данни** се записват в компютърната памет (RAM памет) в **променливи**. Променливите са именувани области от паметта, които пазят данни от определен тип, например число или текст. Всяка една **променлива** в C# има **име**, **тип** и **стойност**. Ето как бихме дефинирали една променлива, като едновременно с декларацията ѝ, ѝ присвояваме и стойност:
-
-![](/assets/chapter-2-images/00.Declaring-variables-01.png)
-
-След тяхната обработка, данните се записват отново в променливи (т.е. някъде в паметта, заделена от нашата програма).
-
-## Типове данни и променливи
-
-В програмирането всяка една променлива съхранява определена **стойност** от даден **тип**. Типовете данни могат да бъдат например: **число**, **буква**, **текст** (стринг), **дата**, **цвят**, **картинка**, **списък** и др.
-Ето няколко примера за типове данни:
-- тип **цяло число**: 1, 2, 3, 4, 5, …
-- тип **дробно число**: 0.5, 3.14, -1.5, …
-- тип **буква от азбуката** (символ): 'a', 'b', 'c', …
-- тип **текст** (стринг): "Здрасти", "Hi", "Beer", …
-- тип **ден от седмицата**: Monday, Tuesday, …
-
-## Четене на дробно число от конзолата
-
-За да прочетем **дробно число** от конзолата е необходимо отново да **декларираме променлива**, да посочим **типа на числото**, както и да използваме стандартната команда за четене на информация от системната конзола:
-
-```csharp
-var num = double.Parse(Console.ReadLine());
-```
-
-### Пример: прехвърляне от инчове в сантиметри
-
-Да напишем програма, която чете дробно число в инчове и го обръща в сантиметри:
-
-```csharp
-Console.Write("Inches = ");
-var inches = double.Parse(Console.ReadLine());
-var centimeters = inches * 2.54;
-Console.Write("Centimeters = ");
-Console.WriteLine(centimeters);
-```
-
-Да стартираме програмата и да се уверим, че при подаване на стойност в инчове, получаваме коректен резултат в сантиметри:
-
-![](assets/chapter-2-images/00.Inches-to-centimeters-01.jpg)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/504#1](https://judge.softuni.bg/Contests/Practice/Index/504#1).
-
-
-## Четене на текст
-
-За да прочетем текст (стринг) от конзолата, отново **декларираме нова променлива** и използваме стандартната **команда за четене на информация от системната конзола**:
-
-```csharp
-var str = Console.ReadLine();
-```
-
-Нека обърнем внимание на факта, че при **четене на текст не се декларира** по никакъв начин тип "**`string`**" (текст). Това е така, защото по подразбиране методът **`Console.ReadLine(…)`** връща като **резултат текст**. Допълнително, вие можете да зададете текста да бъде прехвърлен в цяло число чрез **`int.Parse(…)`** или дробно число чрез **`double.Parse(…)`**. Ако това не се направи, за програмата **всяко едно число** ще бъде просто **текст**, с който **не бихме могли да извършваме** аритметични операции.
-
-### Пример: поздрав по име
-
-Да напишем програма, която въвежда името на потребителя и го поздравява с текста "**Hello, *име***".
-
-```csharp
-var name = Console.ReadLine();
-Console.WriteLine("Hello, {0}!", name);
-```
-
-В този случай, изразът **`{0}`** e заместен от **първия** подаден аргумент, който в примера е променливата **`name`**:
-
-![](/assets/chapter-2-images/00.Greeting-by-name-01.jpg)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/504#2](https://judge.softuni.bg/Contests/Practice/Index/504#2).
-
-
-## Печатане на текст и числа
-
-При печат в конзолата на текст, числа и други данни, **можем да ги съединим**, като използваме шаблони **`{0}`**, **`{1}`**, **`{2}`** и т.н. В програмирането тези шаблони се наричат **placeholders**.
-
-```csharp
-var firstName = Console.ReadLine();
-var lastName = Console.ReadLine();
-var age = int.Parse(Console.ReadLine());
-var town = Console.ReadLine();
-Console.WriteLine("You are {0} {1}, a {2}-years old person from {3}.",
- firstName, lastName, age, town);
-```
-
-Ето резултатът, който ще получим, след изпълнение на този пример:
-
-![](/assets/chapter-2-images/00.Placeholders-01.jpg)
-
-Обърнете внимание как всяка една променлива трябва да бъде подадена в **реда, в който искаме да се печата**. По същество, шаблонът (**placeholder**) **приема променливи от всякакъв вид**.
-
-Възможно е един и същ номер на шаблон да се използва по няколко пъти и не е задължително шаблоните да са номерирани поредно. Ето пример:
-
-```csharp
-Console.WriteLine("{1} + {1} = {0}", 1+1, 1);
-```
-Резултатът е:
-```
-1 + 1 = 2
-```
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/504#3](https://judge.softuni.bg/Contests/Practice/Index/504#3).
-
-
-## Аритметични операции
-
-Да разгледаме базовите аритметични операции в програмирането.
-
-### Събиране на числа (оператор **`+`**)
-
-Можем да събираме числа с оператора **`+`**:
-
-```csharp
-var a = 5;
-var b = 7;
-var sum = a + b; // резултатът е 12
-```
-
-### Изваждане на числа (оператор **`-`**)
-
-Изваждането на числа се извършва с оператора **`-`**:
-
-```csharp
-var a = int.Parse(Console.ReadLine());
-var b = int.Parse(Console.ReadLine());
-var result = a - b;
-Console.WriteLine(result);
-```
-
-Ето резултатът от изпълнението на програмата (при числа 10 и 3):
-
-![](/assets/chapter-2-images/00.Subtracting-01.jpg)
-
-### Умножение на числа (оператор **`*`**)
-
-За умножение на числа използваме оператора **`*`**:
-
-```csharp
-var a = 5;
-var b = 7;
-var product = a * b; // 35
-```
-
-### Деление на числа (оператор /)
-
-Делението на числа се извършва с оператора **`/`**. Той работи различно при цели и при дробни числа.
-* Когато делим две цели числа, се извършва **целочислено деление** и полученият резултат е цяло число с отрязана дробна част. Например 11 / 3 = 3.
-* Когато делим две числа, от които поне едното е дробно, се извършва **дробно деление** и полученият резултат е дробно число, както в математиката. Например 11 / 4.0 = 2.75. При невъзможност за точно разделяне, резултатът се закръгля, например 11.0 / 3 = 3.66666666666667.
-* Целочисленото **деление на 0** предизвиква **грешка** по време на изпълнение (runtime exception).
-* Дробното **деление на 0** не предизвиква грешка, а резултатът е **+/- безкрайност** или специалната стойност **NaN**. Например 5 / 0.0 = ∞.
-
-Ето няколко примера за използване на оператора за делене:
-
-```csharp
-var a = 25;
-var i = a / 4; // извършваме т.нар. целочислено деление:
- // резултатът от тази операция ще бъде 6 – дробната част се отрязва,
- // тъй като извършваме деление с цели числа
-var f = a / 4.0; // 6.25 – дробно деление. Изрично сме указали числото 4 да се интерпретира
- // като дробно, като сме добавили десетичната точка, следвана от нула
-var error = a / 0; // Грешка: целочислено деление на 0
-```
-
-Да разгледаме и няколко примера за **целочислено деление** (запомнете, че при **деление на цели числа** в езика C# резултатът е **цяло число**):
-
-```csharp
-var a = 25;
-Console.WriteLine(a / 4); // Целочислен резултат: 6
-Console.WriteLine(a / 0); // Грешка: деление на 0
-```
-
-Да разгледаме няколко примера за **деление на дробни числа**. При дробно делене резултатът винаги е **дробно число** и деленето никога не дава грешка и работи коректно със специалните стойности **+∞** и **-∞**:
-
-```csharp
-var a = 15;
-Console.WriteLine(a / 2.0); // Дробен резултат: 7.5
-Console.WriteLine(a / 0.0); // Резултат: Infinity
-Console.WriteLine(-a / 0.0); // Резултат: -Infinity
-Console.WriteLine(0.0 / 0.0); // Резултат: NaN (Not a Number), т.е. резултатът
- // от операцията не е валидна числена стойност
-```
-
-При отпечатването на стойностите **∞** и **-∞** на конзолата може да излязат `?`, защото конзолата в Windows не поддържа коректно Unicode и поврежда повечето нестандартни символи, букви и специални знаци. Горният пример най-вероятно ще изведе следния резултат:
-```
-7.5
-?
--?
-NaN
-```
-
-## Съединяване на текст и число
-
-Операторът **`+`** освен за събиране на числа служи и за съединяване на текст (долепяне на два символни низа един след друг). В програмирането съединяване на текст с текст или с число наричаме "**конкатенация**". Ето как можем да съединяваме текст и число с оператора **`+`**:
-
-```csharp
-var firstName = "Maria";
-var lastName = "Ivanova";
-var age = 19;
-var str = firstName + " " + lastName + " @ " + age;
-Console.WriteLine(str); // Maria Ivanova @ 19
-```
-
-Ето още един пример:
-
-```csharp
-var a = 1.5;
-var b = 2.5;
-var sum = "The sum is: " + a + b;
-Console.WriteLine(sum); // The sum is: 1.52.5
-```
-
-Забелязвате ли нещо странно? Може би очаквахте числата **`a`** и **`b`** да се сумират? Всъщност конкатенацията работи отляво надясно и горният резултат е абсолютно коректен. Ако искаме да сумираме числата, ще трябва да ползваме **скоби**, за да променим реда на изпълнение на операциите:
-
-```csharp
-var a = 1.5;
-var b = 2.5;
-var sum = "The sum is: " + (a + b);
-Console.WriteLine(sum); // The sum is: 4
-```
-
-
-## Числени изрази
-
-В програмирането можем да пресмятаме и **числови изрази**, например:
-
-```csharp
-var expr = (3 + 5) * (4 – 2);
-```
-В сила е стандартното правило за приоритетите на аритметичните операции: **умножение и деление се извършват винаги преди събиране и изваждане**. При наличие на **израз в скоби, той се изчислява пръв**, но ние знаем всичко това от училищната математика.
-
-### Пример: изчисляване на лице на трапец
-
-Да напишем програма, която въвежда дължините на двете основи на трапец и неговата височина (по едно дробно число на ред) и пресмята **лицето на трапеца** по стандартната математическа формула:
-
-```csharp
-var b1 = double.Parse(Console.ReadLine());
-var b2 = double.Parse(Console.ReadLine());
-var h = double.Parse(Console.ReadLine());
-var area = (b1 + b2) * h / 2.0;
-Console.WriteLine("Trapezoid area = " + area);
-```
-
-Ако стартираме програмата и въведем за страните съответно `3`, `4` и `5`, ще получим следния резултат:
-```
-3
-4
-5
-Trapezoid area = 17.5
-```
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/504#4](https://judge.softuni.bg/Contests/Practice/Index/504#4).
-
-
-### Пример: периметър и лице на кръг
-
-Нека напишем програма, която при въвеждане **радиуса r** на кръг **изчислява лицето и периметъра** на кръга / окръжността.
-
-Формули:
-- Лице = π \* r \* r
-- Периметър = 2 \* π \* r
-- π ≈ 3.14159265358979323846…
-
-```csharp
-Console.Write("Enter circle radius. r = ");
-var r = double.Parse(Console.ReadLine());
-Console.WriteLine("Area = " + Math.PI * r * r);
- // Math.PI - вградена в C# константа за π
-Console.WriteLine("Perimeter = " + 2 * Math.PI * r);
-```
-Нека изпробваме програмата с **радиус `r = 10`**:
-
-![](/assets/chapter-2-images/00.Circle-area-01.jpg)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/504#5](https://judge.softuni.bg/Contests/Practice/Index/504#5).
-
-
-### Пример: лице на правоъгълник в равнината
-
-Правоъгълник е зададен с **координатите на два от своите два срещуположни ъгъла**. Да се пресметнат **площта и периметъра** му:
-
-
-
-В тази задача трябва да съобразим, че ако от по-големия `x` извадим по-малкия `x`, ще получим дължината на правоъгълника. Аналогично, ако от по-големия `y` извадим по-малкия `y`, ще получим височината на правоъгълника. Остава да умножим двете страни. Ето примерна имплементация на описаната логика:
-
-```csharp
-var x1 = double.Parse(Console.ReadLine());
-var y1 = double.Parse(Console.ReadLine());
-var x2 = double.Parse(Console.ReadLine());
-var y2 = double.Parse(Console.ReadLine());
-
-// Изчисляване страните на правоъгълника:
-var width = Math.Max(x1, x2) - Math.Min(x1, x2);
-var height = Math.Max(y1, y2) - Math.Min(y1, y2);
-
-Console.WriteLine("Area = " + width * height);
-Console.WriteLine("Perimeter = " + 2 * (width + height));
-```
-
-Използваме **`Math.Max(a, b)`**, за да намерим по-голямата измежду стойностите **`a`** и **`b`** и аналогично **`Math.Min(a, b)`** за намиране на по-малката от двете стойности.
-
-При стартиране на програмата със стойностите от координатната система в условието, получаваме следния резултат:
-
-![](/assets/chapter-2-images/00.Rectangle-area-02.jpg)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/504#6](https://judge.softuni.bg/Contests/Practice/Index/504#6).
-
-
-## Какво научихме от тази глава?
-
-Да резюмираме какво научихме от тази глава на книгата:
-- **Въвеждане на текст**: **`var str = Console.ReadLine();`**.
-- **Въвеждане на цяло число**: **`var num = int.Parse(Console.ReadLine());`**.
-- **Въвеждане на дробно число**: **`var num = double.Parse(Console.ReadLine());`**.
-- **Извършване на пресмятания с числа** и използване на съответните **аритметични оператори** [+, -, \*, /, ()]: **`var sum = 5 + 3;`**.
-- **Извеждане на текст по шаблон** на конзолата: **`Console.WriteLine("{0} + {1} = {2}", 3, 5, 3 + 5);`**.
-
-## Упражнения: прости пресмятания
-
-Нека затвърдим наученото в тази глава с няколко задачи.
-
-### Празно Visual Studio решение (Blank Solution)
-
-Започваме, като създадем празно решение **(Blank Solution)** във Visual Studio. Решенията (solutions) във Visual Studio обединяват **група проекти**. Тази възможност е **изключително удобна**, когато искаме да **работим по няколко проекта** и бързо да превключваме между тях или искаме да **обединим логически няколко взаимосвързани проекта**.
-В настоящото практическо занимание ще използваме **Blank Solution с няколко проекта**, за да организираме решенията на задачите от упражненията – всяка задача в отделен проект и всички проекти в общ solution.
-
-* Стартираме Visual Studio.
-* Създаваме нов **Blank Solution:** [**File**] -> [**New**] -> [**Project**].
-
-![](/assets/chapter-2-images/00.Blank-solution-01.png)
-
-Избираме от диалоговия прозорец [**Templates**] -> [**Other Project Types**] -> [**Visual Studio Solutions**] -> [**Blank Solution**] и даваме подходящо име на проекта, например “Simple-Calculations”:
-
-![](/assets/chapter-2-images/00.Blank-solution-02.png)
-
-Сега имаме създаден **празен Visual Studio Solution** (с 0 проекта в него):
-
-![](/assets/chapter-2-images/00.Blank-solution-03.png)
-
-Целта на този blank solution e да добавяме в него **по един проект за всяка задача** от упражненията.
-
-### Задача: пресмятане на лице на квадрат
-
-Първата задача от тази тема е следната: да се напише конзолна програма, която **въвежда цяло число `a` и пресмята лицето** на квадрат със страна **`a`**. Задачата е тривиално лесна: **въвеждате число** от конзолата, **умножавате го само по себе си** и **печатате получения резултат** на конзолата.
-
-#### Насоки и подсказки
-
-Създаваме **нов проект** в съществуващото Visual Studio решение. В **Solution Explorer** кликнете с десен бутон на мишката върху **Solution 'Simple-Calculations'**. Изберете [**Add**] -> [**New Project…**]:
-
-![](/assets/chapter-2-images/01.Square-area-01.png)
-
-Ще се отвори **диалогов прозорец** за избор на **тип проект** за създаване. Избираме **C# конзолно приложение** с име “Square-Area”:
-
-![](/assets/chapter-2-images/01.Square-area-02.png)
-
-Вече имаме solution с едно конзолно приложение в него. Остава да напишем **кода за решаване на задачата**. За целта отиваме в тялото на метода **`Main(string[] args)`** и пишем следния код:
-
-![](/assets/chapter-2-images/01.Square-area-03.png)
-
-Кодът въвежда цяло число чрез **`a = int.Parse(Console.ReadLine())`**, след това изчислява **`area = a * a`** и накрая печата стойността на променливата **`area`**. **Стартираме** програмата с [**Ctrl+F5**] и я **тестваме** с различни входни стойности:
-
-![](/assets/chapter-2-images/01.Square-area-04.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/504#0](https://judge.softuni.bg/Contests/Practice/Index/504#0). Трябва да получите 100 точки (напълно коректно решение):
-
-![](/assets/chapter-2-images/01.Square-area-05.png)
-
-![](/assets/chapter-2-images/01.Square-area-06.png)
-
-
-### Задача: от инчове към сантиметри
-
-Да се напише програма, която **чете от конзолата число** (не непременно цяло) и преобразува числото от **инчове в сантиметри.** За целта **умножава инчовете по 2.54** (защото 1 инч = 2.54 сантиметра).
-
-#### Насоки и подсказки
-
-Първо създаваме **нов C# конзолен проект** в решението “Simple-Calculations”. Кликаме с мишката върху решението в **Solution Explorer** и избираме [**Add**] -> [**New Project…**]:
-
-![](/assets/chapter-2-images/02.Inches-to-centimeters-01.png)
-
-Избираме [**Visual C#**] -> [**Windows**] -> [**Console Application**] и задайте име “Inches-to-Centimeters”:
-
-![](/assets/chapter-2-images/02.Inches-to-centimeters-02.png)
-
-Следва да напишем **кода на програмата**:
-
-![](/assets/chapter-2-images/02.Inches-to-centimeters-03.png)
-
-**Стартираме програмата** с [**Ctrl+F5**]:
-
-![](/assets/chapter-2-images/02.Inches-to-centimeters-04.png)
-
-Изненада! Какво става? Програмата не работи правилно… Всъщност това не е ли предходната програма?
-Във Visual Studio **текущият активен проект** в един solution е маркиран в получерно и може да се сменя:
-
-![](/assets/chapter-2-images/02.Inches-to-centimeters-05.png)
-
-За да включим режим на **автоматично преминаване към текущия проект**, кликаме върху главния solution с десния бутон на мишката и избираме [**Set StartUp Projects…**]:
-
-![](/assets/chapter-2-images/02.Inches-to-centimeters-06.png)
-
-Ще се появи диалогов прозорец, от който трябва да се избере [**Startup Project**] -> [**Current Selection**]:
-
-![](/assets/chapter-2-images/02.Inches-to-centimeters-07.png)
-
-Сега отново **стартираме програмата**, както обикновено с [**Ctrl+F5**]. Този път ще се стартира **текущата отворена програма**, която преобразува инчове в сантиметри. Изглежда работи коректно:
-
-![](/assets/chapter-2-images/02.Inches-to-centimeters-08.png)
-
-Сега **да превключим към преходната програма** (лице на квадрат). Това става с двоен клик на мишката върху файла **``Program.cs``** от предходния проект **“Square-Area”** в панела [**Solution Explorer**] на Visual Studio:
-
-![](/assets/chapter-2-images/02.Inches-to-centimeters-12.png)
-
-Натискаме пак [**Ctrl+F5**]. Този път трябва да се стартира другият проект:
-
-![](/assets/chapter-2-images/02.Inches-to-centimeters-11.png)
-
-Превключваме обратно към проекта **“Inches-to-Centimeters”** и го стартираме с [**Ctrl+F5**]:
-
-![](/assets/chapter-2-images/02.Inches-to-centimeters-09.png)
-
-**Превключването между проектите** е много лесно, нали? Просто избираме файла със сорс кода на програмата, кликваме го два пъти с мишката и при стартиране тръгва програмата от този файл.
-
-Да тестваме с дробни числа, например с **2.5**:
-
-![](/assets/chapter-2-images/02.Inches-to-centimeters-10.png)
-
-
|
-В зависимост от регионалните настройки на операционната система, е възможно вместо десетична точка (US настройки) да се използва десетична запетая (BG настройки). |
-
-
-Ако програмата очаква десетична точка и бъде въведено число с десетична запетая или обратното (бъде въведена десетична точка, когато се очаква десетична запетая), ще се получи следната грешка:
-
-![](/assets/chapter-2-images/02.Inches-to-centimeters-13.png)
-
-Препоръчително е **да променим настройките на компютъра си**, така че да се използва **десетична точка**:
-
-![](/assets/chapter-2-images/02.Inches-to-centimeters-14.png)
-
-![](/assets/chapter-2-images/02.Inches-to-centimeters-15.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/504#1](https://judge.softuni.bg/Contests/Practice/Index/504#1).
-
-Решението би трябвало да бъде прието като напълно коректно:
-
-![](/assets/chapter-2-images/02.Inches-to-centimeters-16.png)
-
-
-### Задача: поздрав по име
-
-Да се напише програма, която **чете от конзолата име на човек** и отпечатва **`Hello,
!`**, където **``** е въведеното преди това име.
-
-#### Насоки и подсказки
-
-Първо създаваме **нов C# конзолен проект** с име “Greeting” в решението “Simple-Calculations”:
-
-![](/assets/chapter-2-images/03.Greeting-by-name-01.png)
-
-**Следва да напишем кода** на програмата. Ако се затруднявате, може да ползвате примерния код по-долу:
-
-![](/assets/chapter-2-images/03.Greeting-by-name-02.png)
-
-**Стартираме** програмата с [**Ctrl+F5**] и я тестваме дали работи:
-
-![](/assets/chapter-2-images/03.Greeting-by-name-03.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/504#2](https://judge.softuni.bg/Contests/Practice/Index/504#2).
-
-
-### Задача: съединяване на текст и числа
-
-Напишете C# програма, която прочита от конзолата име, фамилия, възраст и град и печата съобщение от следния вид: **`You are , a -years old person from `**.
-
-#### Насоки и подсказки
-
-Добавяме към текущото Visual Studio решение още един конзолен C# проект с име “Concatenate-Data”. **Пишем кода**, който чете входните данни от конзолата:
-
-![](/assets/chapter-2-images/04.Concatenate-data-01.png)
-
-**Кодът**, който отпечатва описаното в условието на задачата съобщение, трябва да се допише.
-
-![](/assets/chapter-2-images/04.Concatenate-data-02.png)
-
-На горната картинка кодът е нарочно даден замъглен, за да помислите как да си го напишете сами.
-
-Следва да се тества решението локално с [**Ctrl+F5**] и въвеждане на примерни входни данни.
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/504#3](https://judge.softuni.bg/Contests/Practice/Index/504#3).
-
-
-### Задача: лице на трапец
-
-Напишете програма, която чете от конзолата три числа **b1, b2 и h и пресмята лицето на трапец** с основи **b1 и b2 и височина h. Формулата за лице на трапец е (b1 + b2) * h / 2**.
-
-На фигурата по-долу е показан трапец със страни 8 и 13 и височина 7. Той има лице **(8 + 13) * 7 / 2 = 73.5**.
-
-![](/assets/chapter-2-images/05.Trapezoid-area-01.png)
-
-#### Насоки и подсказки
-
-Отново трябва да добавим към текущото Visual Studio решение още един **конзолен C# проект** с име ""Trapezoid-Area" и да напишем **кода, който чете входните данни от конзолата, пресмята лицето на трапеца и го отпечатва**:
-
-![](/assets/chapter-2-images/05.Trapezoid-area-02.png)
-
-Кодът на картинката е нарочно размазан, за да помислите върху него и да го допишете сами.
-
-**Тествайте** решението локално с [**Ctrl+F5**] и въвеждане на примерни данни.
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/504#4](https://judge.softuni.bg/Contests/Practice/Index/504#4).
-
-
-### Задача: периметър и лице на кръг
-
-Напишете програма, която чете от конзолата **число r** и пресмята и отпечатва **лицето и периметъра на кръг**/**окръжност** с **радиус r**.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-|-----|--------------------------------------------------------|
-| 3 | Area = 28.2743338823081
Perimeter = 18.8495559215388|
-| 4.5 | Area = 63.6172512351933
Perimeter = 28.2743338823081|
-
-#### Насоки и подсказки
-
-За изчисленията можете да използвате следните формули:
-- **`Area = Math.PI * r * r`**.
-- **`Perimeter = 2 * Math.PI * r`**.
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/504#5](https://judge.softuni.bg/Contests/Practice/Index/504#5).
-
-
-### Задача: лице на правоъгълник в равнината
-
-**Правоъгълник** е зададен с **координатите** на два от своите срещуположни ъгъла (x1, y1) – (x2, y2). Да се пресметнат **площта и периметъра** му. **Входът** се чете от конзолата. Числата **x1, y1, x2 и y2** са дадени по едно на ред. **Изходът** се извежда на конзолата и трябва да съдържа два реда с по една число на всеки от тях – лицето и периметъра.
-
-![](/assets/chapter-2-images/07.Rectangle-area-01.png)
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-|-----------------------------------------|-------------------|
-|60
20
10
50 |1500
160 |
-|30
40
70
-10 |2000
180 |
-|600.25
500.75
100.50
-200.5 |350449.6875
2402 |
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/504#6](https://judge.softuni.bg/Contests/Practice/Index/504#6).
-
-
-### Задача: лице на триъгълник
-
-Напишете програма, която чете от конзолата **страна и височина на триъгълник** и пресмята неговото лице. Използвайте **формулата** за лице на триъгълник: **area = a * h / 2**. Закръглете резултата до **2 цифри след десетичния знак използвайки `Math.Round(area, 2)`**.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-|--------------------|---------------------|
-| 20
30 | Triangle area = 300 |
-| 15
35 | Triangle area = 262.5 |
-| 7.75
8.45 | Triangle area = 32.74 |
-| 1.23456
4.56789 | Triangle area = 2.82 |
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/504#7](https://judge.softuni.bg/Contests/Practice/Index/504#7).
-
-
-### Задача: конзолен конвертор - от градуси °C към градуси °F
-
-Напишете програма, която чете **градуси по скалата на Целзий** (°C) и ги преобразува до **градуси по скалата на Фаренхайт** (°F). Потърсете в Интернет подходяща [формула](http://bfy.tw/3rGh "Търсене в Google"), с която да извършите изчисленията. Закръглете резултата до **2 символа след десетичния знак**. Ето няколко примера:
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-|----|-----|
-| 25 | 77 |
-| 0 | 32 |
-| -5.5 | 22.1 |
-| 32.3 | 90.14 |
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/504#8](https://judge.softuni.bg/Contests/Practice/Index/504#8).
-
-
-### Задача: конзолен конвертор - от радиани в градуси
-
-Напишете програма, която чете **ъгъл в [радиани](https://bg.wikipedia.org/wiki/Радиан)** (**`rad`**) и го преобразува в **[градуси](https://bg.wikipedia.org/wiki/Градус_(ъгъл))** (`deg`). Потърсете в Интернет подходяща формула. Числото **π** в C# програмите е достъпно чрез **``Math.PI``**. Закръглете резултата до най-близкото цяло число използвайки метода **``Math.Round(…)``**.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-|------|-----|
-| 3.1416 | 180 |
-| 6.2832 | 360 |
-| 0.7854 | 45 |
-| 0.5236 | 30 |
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/504#9](https://judge.softuni.bg/Contests/Practice/Index/504#9).
-
-
-### Задача: конзолен конвертор - USD към BGN
-
-Напишете програма за **конвертиране на щатски долари** (USD) **в български лева** (BGN). **Закръглете** резултата до **2 цифри** след десетичния знак. Използвайте фиксиран курс между долар и лев: **1 USD = 1.79549 BGN**.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-|------|---------|
-| 20 | 35.91 BGN |
-| 100 | 179.55 BGN|
-| 12.5 | 22.44 BGN |
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/504#10](https://judge.softuni.bg/Contests/Practice/Index/504#10).
-
-
-### Задача: \* конзолен междувалутен конвертор
-
-Напишете програма за **конвертиране на парична сума от една валута в друга**. Трябва да се поддържат следните валути: **BGN, USD, EUR, GBP**. Използвайте следните фиксирани валутни курсове:
-
-| Курс | USD | EUR | GBP |
-|:------:|:-------:|:-------:|:-------:|
-| 1 BGN | 1.79549 | 1.95583 | 2.53405 |
-
-**Входът** e **сума за конвертиране**, **входна валута** и **изходна валута**. **Изходът** е едно число – преобразуваната сума по посочените по-горе курсове, закръглен до **2 цифри** след десетичната точка.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-|------------------|--------|
-| 20
USD
BGN |35.91 BGN |
-| 100
BGN
EUR |51.13 EUR |
-| 12.35
EUR
GBP| 9.53 GBP |
-|150.35
USD
EUR|138.02 EUR|
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/504#11](https://judge.softuni.bg/Contests/Practice/Index/504#11).
-
-
-### Задача: ** пресмятане с дати - 1000 дни на Земята
-
-Напишете програма, която въвежда **рождена дата** във формат **`dd-MM-yyyy`** и пресмята датата, на която се навършват **1000 дни** от тази рождена дата и я отпечатва в същия формат.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-|--------|--------|
-|25-02-1995|20-11-1997|
-|07-11-2003|02-08-2006|
-|30-12-2002|24-09-2005|
-|01-01-2012|26-09-2014|
-|14-06-1980|10-03-1983|
-
-#### Насоки и подсказки
-* Потърсете информация за типа **``DateTime``** в C# и по-конкретно разгледайте методите **``ParseExact(str, format)``**, **``AddDays(count)``** и **``ToString(format)``**. С тяхна помощ може да решите задачата, без да е необходимо да изчислявате дни, месеци и високосни години.
-* **Не печатайте** нищо допълнително на конзолата освен изискваната дата!
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/504#12](https://judge.softuni.bg/Contests/Practice/Index/504#12).
-
-
-## Графични приложения с числови изрази
-
-За да упражним работата с променливи и пресмятания с оператори и числови изрази, ще направим нещо интересно: ще разработим **настолно приложение** с графичен потребителски интерфейс. В него ще използваме пресмятания с дробни числа.
-
-### Графично приложение: конвертор от BGN към EUR
-
-От нас се изисква да създадем **графично приложение** (GUI application), което пресмята стойността в **евро** (EUR) на парична сума, зададена в **лева** (BGN). При промяна на стойността в лева, равностойността в евро трябва да се преизчислява автоматично (използваме курс лева / евро: **1.95583**).
-
-![](/assets/chapter-2-images/13.Currency-converter-01.png)
-
-Тази задача излиза извън изучавания в книгата материал и има за цел не да ви научи как да програмирате GUI приложения, а да ви запали интереса към разработката на софтуер. Да се залавяме за работа.
-
-Добавяме към текущото Visual Studio решение (solution) още един проект. Този път създаваме **Windows Forms** приложение със C# с име "BGN-to-EUR-Converter":
-
-![](/assets/chapter-2-images/13.Currency-converter-02.png)
-
-Подреждаме следните UI контроли във формата:
-* **`NumericUpDown`** с име **`numericUpDownAmount`** – ще въвежда сумата за конвертиране
-* **`Label`** с име **`labelResult`** – ще показва резултата след конвертиране
-* Още два **`Label`** компонента, служещи единствено за статично изобразяване на текст
-Графичният редактор за потребителски интерфейс може да изглежда по подобен начин:
-
-![](/assets/chapter-2-images/13.Currency-converter-03.png)
-
-Задаваме следните настройки на формата и на отделните контроли:
-
-| Настройка | Снимка|
-|:-----------------------------------------------------------------------------------------------------:|:-----:|
-|**``FormConverter``**:
Text = "BGN to EUR",
Font.Size = 12,
MaximizeBox = False,
MinimizeBox = False,
FormBorderStyle = FixedSingle | |
-|**``numericUpDownAmount``**:
Value = 1,
Minimum = 0,
Maximum = 10000000,
TextAlign = Right,
DecimalPlaces = 2 | |
-|**``labelResult``**:
AutoSize = False,
BackColor = PaleGreen,
TextAlign = MiddleCenter,
Font.Size = 14,
Font.Bold = True| |
-
-Дефинираме следните **обработчици на събития** по контролите:
-
-![](/assets/chapter-2-images/13.Currency-converter-07.png)
-
-След това хващаме следните събития:
-- **``FormConverter.Load``** (като кликнем върху формата 2 пъти с мишката)
-- **``numericUpDownAmount.ValueChanged``** (като кликнем върху **``NumericUpDown``** контролата 2 пъти)
-- **``numericUpDownAmount.KeyUp``** (избираме **``Events``** от таблото **``Properties``** и кликнем 2 пъти върху **``KeyUp``**)
-
-Събитието **`Form.Load`** се изпълнява при стартиране на програмата, преди да се появи прозореца на приложението. Събитието **`NumericUpDown.ValueChanged`** се изпълнява при промяна на стойността в полето за въвеждане на число. Събитието **`NumericUpDown.KeyUp`** се изпълнява след натискане на клавиш в полето за въвеждане на число. При всяко от тези събития ще преизчисляваме резултата.
-
-За **хващане на събитие** ползваме иконката със събитията (Events) в **Properties** прозореца във Visual Studio:
-
-![](/assets/chapter-2-images/13.Currency-converter-01.png)
-
-Ще използваме следния **C# код** за обработка на събитията:
-
-```csharp
-private void FormConverter_Load(object sender, EventArgs e)
-{
- ConvertCurrency();
-}
-
-private void numericUpDownAmount_ValueChanged(object sender, EventArgs e)
-{
- ConvertCurrency();
-}
-
-private void numericUpDownAmount_KeyUp(object sender, KeyEventArgs e)
-{
- ConvertCurrency();
-}
-```
-
-Всички прихванати събития извикват метода **`ConvertCurrency()`**, който конвертира зададената сума от лева в евро и показва резултата в зелената кутийка.
-
-Трябва да напишем **кода** (програмната логика) за конвертиране от лева към евро:
-
-```csharp
-private void ConvertCurrency()
-{
- var amountBGN = this.numericUpDownAmount.Value;
- var amountEUR = amountBGN * 1.95583m;
- this.labelResult.Text =
- amountBGN + " BGN = " +
- Math.Round(amountEUR, 2) + " EUR";
-}
-```
-
-Накрая **стартираме проекта** с [**Ctrl+F5**] и тестваме дали работи коректно.
-
-Ако имате проблеми с примера по-горе, **гледайте видеото** в началото на тази глава. Там приложението е направено на живо стъпка по стъпка с много обяснения. Или питайте във **форума на SoftUni**: https://softuni.bg/forum.
-
-### Графично приложение: \*\*\* Хвани бутона!
-
-Създайте забавно графично приложение **„хвани бутона“**: една форма съдържа един бутон. При преместване на курсора на мишката върху бутона той се премества на случайна позиция. Така се създава усещане, че **„бутонът бяга от мишката и е трудно да се хване“**. При „хващане“ на бутона се извежда съобщение-поздрав.
-
-![](/assets/chapter-2-images/14.Catch-the-button-01.png)
-
-
-**Подсказка**: напишете обработчик за събитието **``Button.MouseEnter``** и премествайте бутона на случайна позиция. Използвайте генератор за случайни числа **``Random``**. Позицията на бутона се задава от свойството **``Location``**. За да бъде новата позиция на бутона в рамките на формата, можете да направите изчисления спрямо размера на формата, който е достъпен от свойството **``ClientSize``**. Можете да ползвате следния примерен код:
-
-```csharp
-private void buttonCatchMe_MouseEnter(object sender, EventArgs e)
-{
- Random rand = new Random();
- var maxWidth = this.ClientSize.Width - buttonCatchMe.ClientSize.Width;
- var maxHeight = this.ClientSize.Height - buttonCatchMe.ClientSize.Height;
- this.buttonCatchMe.Location = new Point(
- rand.Next(maxWidth), rand.Next(maxHeight));
-}
-```
diff --git a/chapter-03-simple-conditions-exam-problems.md b/chapter-03-simple-conditions-exam-problems.md
deleted file mode 100644
index ae53f4bb5..000000000
--- a/chapter-03-simple-conditions-exam-problems.md
+++ /dev/null
@@ -1,362 +0,0 @@
-# Глава 3.2. Прости проверки – изпитни задачи
-
-В предходната глава разгледахме условните конструкции в езика C#, чрез които можем да изпълняваме различни действия в зависимост от някакво условие. Споменахме още какъв е обхватът на една променлива (нейният **`scope`**), както и как постъпково да проследяваме изпълнението на нашата програма (т.нар. **дебъгване**). В настоящата глава ще упражним работата с логически проверки, като разгледаме някои задачи, давани на изпити. За целта нека първо си припомним конструкцията на логическата проверка:
-
-```csharp
-if (булев израз)
-{
- // тяло на условната конструкция;
-}
-else
-{
- // тяло на else-конструкция;
-}
-```
-
-**`if` проверките** се състоят от:
- * **`if` клауза**
- * булев израз - променлива от булев тип (**`bool`**) или булев логически израз (израз, който връща резултат **`true/false`**)
- * тяло на конструкцията - съдържа произволен блок със сорс код
- * **`else` клауза** и нейният блок със сорс код (**незадължително**)
-
-
-## Изпитни задачи
-
-След като си припомнихме как се пишат условни конструкции, да решим няколко задачи, за да получим практически опит с **`if-else`**-конструкцията.
-
-
-## Задача: цена за транспорт
-
-Студент трябва да пропътува **n километра**. Той има избор измежду **три вида транспорт**:
-* **Такси**. Начална такса: **0.70** лв. Дневна тарифа: **0.79** лв./км. Нощна тарифа: **0.90** лв./км.
-* **Автобус**. Дневна / нощна тарифа: **0.09** лв./км. Може да се използва за разстояния минимум **20** км.
-* **Влак**. Дневна / нощна тарифа: **0.06** лв./км. Може да се използва за разстояния минимум **100** км.
-
-Напишете програма, която въвежда броя **километри n** и **период от деня** (ден или нощ) и изчислява **цената на най-евтиния транспорт**.
-
-### Входни данни
-
-От конзолата се четат **два реда**:
-* Първият ред съдържа числото **n** – брой километри – цяло число в интервала [**1 … 5000**].
-* Вторият ред съдържа дума “**day**” или “**night**” – пътуване през деня или през нощта.
-
-### Изходни данни
-
-Да се отпечата на конзолата **най-ниската цена** за посочения брой километри.
-
-### Примерен вход и изход
-
-| Вход | Изход | Вход | Изход |
-|----------|----------|----------|----------|
-|5
day |4.65 |7
night |7 |
-
-| Вход | Изход | Вход | Изход |
-|----------|----------|----------|----------|
-|25
day |2.25 |180
night|10.8 |
-
-### Насоки и подсказки
-
-Ще прочетем входните данни и в зависимост от разстоянието ще изберем най-евтиния транспорт. За целта ще използваме няколко проверки.
-
-#### Обработка на входните данни
-
-В условието на задачата е дадена **информация за входа и изхода**. Съответно, първите **два реда** от решението ще съдържат декларирането и инициализирането на двете **променливи**, в които ще пазим **стойностите на входните данни**.
-За **първия ред е упоменато**, че съдържа **цяло число**, затова и променливата, която ще бъде декларирана, е от тип **`int`**. За **втория ред** указанието е, че съдържа **дума**, съответно променливата е от тип **`string`**.
-
-![](/assets/chapter-3-2-images/01.Transport-price-01.png)
-
-Преди да започнем проверките е нужно да **декларираме** и една **променлива**, в която ще пазим стойността на **цената за транспорт**.
-
-![](/assets/chapter-3-2-images/01.Transport-price-02.png)
-
-#### Извършване на проверки и съответните изчисления
-
-След като вече сме **декларирали и инициализирали** входните данни и променливата, в която ще пазим стойността на цената, трябва да преценим кои **условия** от задачата първо **ще бъдат проверени**.
-
-От условието е видно, че тарифите на две от превозните средства **не зависят** от това дали е **ден** или **нощ**, но тарифата на единия превоз (такси) **зависи**. По тази причина **първата проверка** ще е именно дали е **ден или нощ**, за да стане ясно коя тарифа на таксито ще се **използва**. За целта **декларираме още една променлива**, в която ще пазим стойността на **тарифата на таксито**.
-
-![](/assets/chapter-3-2-images/01.Transport-price-03.png)
-
-За да изчислим **тарифата на таксито**, ще използваме проверка от типа **`if-else`** и чрез нея променливата за цената на таксито ще си присвои **стойност**.
-
-![](/assets/chapter-3-2-images/01.Transport-price-04.png)
-
-След като е направено и това, вече може да пристъпим към изчислението на самата **цена за транспорта**. Ограниченията, които присъстват в условието на задачата, са относно **разстоянието**, което студента иска да пропътува. По тази причина, ще построим **`if-else`** конструкция, с чиято помощ ще открием **цената** за транспорта в зависимост от подадените километри.
-
-![](/assets/chapter-3-2-images/01.Transport-price-05.png)
-
-Първо правим проверка дали километрите са **под 20**, тъй като от условието е видно, че **под 20** километра студента би могъл да използва само **такси**. Ако условието на проверката е **вярно** (връща **`true`**), променливата, която е създадена, за да пази стойността на цената на транспорта (**`price`**), ще си **присвои** съответната стойност. Тази стойност е равна на **първоначалната такса**, която **събираме** с неговата **тарифа**, **умножена** по **разстоянието**, което студента трябва да измине.
-
-Ако условието на променливата **не е вярно** (връща **`false`**), следващата стъпка е програмата ни да провери дали километрите са **под 100**. Правим това, защото от условието е видно, че в този диапазон може да се използва и **автобус** като транспортно средство. **Цената** за километър на автобуса **е по-ниска** от тази на таксито. Следователно, ако резултата от проверката е **верен**, то в блок тялото на **`else if`**, на променливата за цената на транспорта (**`price`**) трябва да присвоим **стойност**, равна на резултата от **умножението** на **тарифата** на автобуса по **разстоянието**.
-
-Ако и тази проверка **не даде `true`** като резултат, остава в тялото на **`else`** на променливата за цена да присвоим **стойност**, равна на **резултата** от **умножението** на **разстоянието** по **тарифата** на влака. Това се прави, тъй като влакът е **най-евтиния** вариант за транспорт при даденото разстояние.
-
-#### Отпечатване на изходните данни
-
-След като сме направили **проверките** за разстоянието и сме **изчислили цената на най-евтиния транспорт**, следва да я **отпечатаме**. В условието на задачата **няма** изисквания как да бъде форматиран резултата и по тази причина ще отпечатаме само **променливата**.
-
-![](/assets/chapter-3-2-images/01.Transport-price-06.png)
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/507#0](https://judge.softuni.bg/Contests/Practice/Index/507#0).
-
-
-## Задача: тръби в басейн
-
-Басейн с **обем V** има **две тръби**, от които се пълни. **Всяка тръба има определен дебит** (литрите вода, минаващи през една тръба за един час). Работникът пуска тръбите едновременно и излиза за **N часа**. Напишете програма, която изкарва състоянието на басейна, **в момента, когато работникът се върне**.
-
-### Входни данни
-
-От конзолата се четат **четири реда**:
-* Първият ред съдържа числото **V – обем на басейна в литри** – цяло число в интервала [**1 … 10000**].
-* Вторият ред съдържа числото **P1 – дебит на първата тръба за час** – цяло число в интервала [**1 … 5000**].
-* Третият ред съдържа числото **P2 – дебит на втората тръба за час** – цяло число в интервала [**1 … 5000**].
-* Четвъртият ред съдържа числото **H – часовете, в които работникът отсъства** – число с плаваща запетая в интервала [**1.0 … 24.00**].
-
-### Изходни данни
-
-Да се отпечата на конзолата **едно от двете възможни състояния**:
-* До колко се е запълнил басейнът и коя тръба с колко процента е допринесла. Всички проценти да се форматират до цяло число (без закръгляне).
- * "The pool is **[x]**% full. Pipe 1: **[y]**%. Pipe 2: **[z]**%."
-* Ако басейнът се е препълнил – с колко литра е прелял за даденото време, число с плаваща запетая.
- * "For **[x]** hours the pool overflows with **[y]** liters."
-
-**Имайте предвид**, че поради **закръглянето до цяло число** се **губят данни** и e нормално **сборът на процентите да е 99%, а не 100%**.
-
-### Примерен вход и изход
-
-|Вход|Изход|Вход|Изход|
-| ---- | ----- | ---- | ---- |
-|1000
100
120
3 |The pool is 66% full. Pipe 1: 45%. Pipe2: 54%. |100
100
100
2.5|For 2.5 hours the pool overflows with 400 liters.|
-
-### Насоки и подсказки
-
-За да решим задачата, ще прочетем входа, ще извършим няколко проверки и изчисления и ще отпечатаме резултата.
-
-#### Обработка на входните данни
-
-От условието на задачата виждаме, че в програмата ни трябва да има **четири реда**, от които четем **входните данни**. Чрез първите **три** ще въвеждаме **цели числа** и по тази причина **променливите**, в които ще запазваме стойностите, ще бъдат от тип **`int`**. За **четвъртия** ред ни е казано, че ще бъде **число**, което е **с плаваща запетая**, затова и **променливата**, която ще използваме, е от тип **`double`**.
-
-![](/assets/chapter-3-2-images/02.Pipes-in-pool-01.png)
-
-Следващата ни стъпка е да **декларираме и инициализираме** променлива, в която ще изчислим с колко **литра** се е **напълнил** басейна за **времето**, в което работникът е **отсъствал**. Изчисленията ще направим като **съберем** стойностите на дебита на **двете тръби** и ги **умножим** по **часовете**, които са ни зададени като вход.
-
-![](/assets/chapter-3-2-images/02.Pipes-in-pool-02.png)
-
-#### Извършване на проверки и обработка на изходните данни
-
-След като вече имаме и **стойността на количеството** вода, което е минало през **тръбите**, следва стъпката, в която трябва да **сравним** това количество с обема на самия басейн.
-
-Това ще направим с проста **`if-else`** проверка, в която условието ще е дали **количеството вода е по-малко от обема на басейна**. Ако проверката върне **`true`**, то трябва да разпечатаме един **ред**, който да съдържа в себе си **съотношението** между количеството **вода, минало през тръбите**, и **обема на басейна**, както и **съотношението на количеството вода** от **всяка една тръба** спрямо **обема на басейна**.
-
-Съотношението е нужно да бъде изразено в **проценти**, затова и всички изчисления до момента в този ред ще бъдат **умножени по 100**. Стойностите ще бъдат вмъкнати с **placeholder-и** и тъй като има условие **резултата в проценти** да се форматира до **две цифри** след **десетичния** знак **без закръгляне**, то за целта ще използваме метода **`Math.Truncate(…)`**.
-
-![](/assets/chapter-3-2-images/02.Pipes-in-pool-03.png)
-
-Ако **проверката** обаче върне резултат **`false`**, то това означава, че **количеството вода** е **по-голямо** от **обема** на басейна, съответно той е **прелял**. Отново изхода трябва да е на **един ред**, но този път съдържа в себе си само **две стойности** - тази на **часовете**, в които работникът е отсъствал, и **количеството вода**, което е **разлика** между **влязлата вода** и **обема на басейна**.
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/507#1](https://judge.softuni.bg/Contests/Practice/Index/507#1).
-
-
-## Задача: поспаливата котка Том
-
-**Котката Том** обича по цял ден да спи, за негово съжаление стопанинът му си играе с него винаги когато има свободно време. За да се наспи добре, **нормата за игра** на Том е **30 000 минути в година**. Времето за игра на Том **зависи от почивните дни на стопанина му**:
-* Когато е на **работа**, стопанинът му си играе с него **по 63 минути на ден**.
-* Когато **почива**, стопанинът му си играе с него **по 127 минути на ден**.
-
-Напишете програма, която въвежда **броя почивни дни** и отпечатва дали **Том може да се наспи добре** и колко е **разликата от нормата** за текущата година, като приемем че **годината има 365 дни**.
-
-**Пример**: 20 почивни дни -> работните дни са 345 (365 – 20 = 345). Реалното време за игра е 24 275 минути (345 \* 63 + 20 \* 127). Разликата от нормата е 5 725 минути (30 000 – 24 275 = 5 725) или 95 часа и 25 минути.
-
-### Входни данни
-
-Входът се чете от конзолата и се състои от едно цяло число - **броят почивни дни** в интервала [**0 … 365**].
-
-### Изходни данни
-
-На конзолата трябва да се отпечатат **два реда**.
-* Ако времето за игра на Том **е над нормата** за текущата година:
- * **На първия ред** отпечатайте: **“Tom will run away”**
- * **На втория ред** отпечатайте разликата от нормата във формат:
- **“{H} hours and {M} minutes more for play”**
-* Ако времето за игра на Том **е под нормата** за текущата година:
- * **На първия ред** отпечатайте: **“Tom sleeps well”**
- * **На втория ред** отпечатайте разликата от нормата във формат:
- **“{H} hours and {M} minutes less for play”**
-
-### Примерен вход и изход
-
-|Вход|Изход|Вход|Изход|
-|----|-----|----|-----|
-|20|Tom sleeps well
95 hours and 25 minutes less for play|113|Tom will run away
3 hours and 47 minutes for play|
-
-### Насоки и подсказки
-
-За да решим задачата, ще прочетем входа, ще извършим няколко проверки и изчисления и ще отпечатаме резултата.
-
-#### Обработка на входните данни и прилежащи изчисления
-
-От условието на задачата виждаме, че **входните данни** ще бъдат прочетени само от **един ред**, който ще съдържа в себе си **едно цяло число** в интервала [**0 … 365**]. По тази причина ще използваме променлива от тип **`int`**.
-
-![](/assets/chapter-3-2-images/03.Sleepy-tom-cat-01.png)
-
-За да решим задачата, **първо** трябва да изчислим колко **общо минути** стопанинът на Том си играе с него. От условието виждаме, че освен в **почивните дни**, поспаливата котка трябва да си играе и в **работните** за стопанина му. **Числото**, което прочитаме от конзолата, е това на **почивните дни**.
-
-Следващата ни стъпка е с помощта на това число да **изчислим** колко са **работните дни** на стопанина, тъй като без тях не можем да стигнем до **общото количество минути за игра**. Щом общият брой на дните в годината е ***365***, а броят на почивните дни е **Х**, то това означава, че броят на работните дни е **365 - X**. **Разликата** ще запазим в нова променлива, която ще използваме **само** за тази **стойност**.
-
-![](/assets/chapter-3-2-images/03.Sleepy-tom-cat-02.png)
-
-След като вече имаме **количествата дни за игра**, то вече можем да **изчислим времето за игра** на Том в минути. Неговата **стойност е равна** на **резултата от умножението на работните дни по 63** минути (в условието е зададено, че в работни дни, времето за игра е 63 минути на ден) **събран с резултата от умножението на почивните дни по 127** минути (в условието е зададено, че в почивните дни, времето за игра е 127 минути на ден).
-
-![](/assets/chapter-3-2-images/03.Sleepy-tom-cat-03.png)
-
-В условието на задачата за изхода виждаме, че ще трябва да **разпечатаме разликата** между двете стойности в **часове** и **минути**. За тази цел от **общото** време за игра ще **извадим** нормата от **30 000** минути и получената разлика ще **запишем** в **нова** променлива. След това тази променлива ще **разделим целочислено** на 60, за да получим **часовете**, а след това, за да открием колко са **минутите** ще използваме **модулно деление с оператора `%`**, като отново ще разделим променливата на разликата с 60.
-
-Тук трябва да отбележим, че ако полученото количество **време игра** на Том е **по-малко** от **30 000**, при **изваждането** на нормата от него ще получим **число с отрицателен знак**. За да **неутрализираме** знака в двете деления по-късно, ще използваме **метода `Math.Abs(…)`** при намирането на разликата.
-
-![](/assets/chapter-3-2-images/03.Sleepy-tom-cat-04.png)
-
-#### Извършване на проверки
-
-Времето за игра вече е изчислено, което ни води до **следващата** стъпка - **сравняване** на **времето за игра** на Том с **нормата**, от която зависи дали котката може да се наспива добре. За целта ще използваме **`if-else`** проверка, като в **`if` клаузата** ще проверим дали **времето за игра е по-голямо от 30 000** (нормата).
-
-#### Обработка на изходните данни
-
-Какъвто и **резултат** да ни върне проверката, то трябва да разпечатаме колко е **разликата в часове и минути**. Това ще направим с **placeholder** и променливите, в които изчислихме стойностите на часовете и минутите, като форматирането ще е според условието за изход.
-
-![](/assets/chapter-3-2-images/03.Sleepy-tom-cat-05.png)
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/507#2](https://judge.softuni.bg/Contests/Practice/Index/507#2).
-
-
-## Задача: реколта
-
-От **лозе с площ X квадратни метри** се заделя **40% от реколтата за производство на вино**. От **1 кв.м. лозе** се **изкарват Y килограма грозде**. За **1 литър вино** са **нужни 2,5 кг. грозде**. **Желаното количество вино** за продан е **Z литра.**
-
-Напишете **програма**, която **пресмята колко вино може да се произведе** и **дали** това количество **е достатъчно**. **Ако е достатъчно, остатъкът се разделя по равно между работниците на лозето.**
-
-### Входни данни
-
-Входът се чете от конзолата и се състои от **точно 4 реда**:
-* 1-ви ред: **X кв.м е лозето – цяло число в интервала** [**10 … 5000**].
-* 2-ри ред: **Y грозде за един кв.м. – реално число в интервала** [**0.00 … 10.00**].
-* 3-ти ред: **Z нужни литри вино – цяло число в интервала** [**10 … 600**].
-* 4-ти ред: **брой работници – цяло число в интервала** [**1 … 20**].
-
-### Изходни данни
-
-На конзолата трябва да се отпечата следното:
-* Ако **произведеното** вино е **по-малко от нужното**:
- * **“It will be a tough winter! More {недостигащо вино} liters wine needed.**”
- \* **Резултатът** трябва да е **закръглен към по-ниско цяло число**.
-* Ако **произведеното** вино е **повече от нужното**:
- * **“Good harvest this year! Total wine: {общо вино} liters.”**
- \* **Резултатът** трябва да е **закръглен към по-ниско цяло число**.
- * **“{Оставащо вино} liters left -> {вино за 1 работник} liters per person.”**
- \* И **двата резултата** трябва да са **закръглени към по-високото цяло число**.
-
-### Примерен вход и изход
-
-|Вход|Изход|Вход|Изход|
-|----|-----|----|-----|
-|650
2
175
3|Good harvest this year! Total wine: 208 liters.
33 liters left -> 11 liters per person.|1020
1.5
425
4|It will be a tough winter! More 180 liters wine needed.|
-
-### Насоки и подсказки
-
-За да решим задачата, ще прочетем входа, ще извършим няколко проверки и изчисления и ще отпечатаме резултата.
-
-#### Обработка на входните данни и прилежащи изчисления
-
-Първо трябва да **проверим** какви ще са **входните данни** и да изберем какви **променливи** ще използваме.
-
-![](/assets/chapter-3-2-images/04.Harvest-01.png)
-
-За да решим задачата е нужно да **изчислим** колко **литра вино** ще получим на база **входните данни**. От условието на задачата виждаме, че за да **пресметнем** количеството **вино в литри**, трябва първо да разберем какво е **количеството грозде в килограми**, което ще се получи от тази реколта. За тази цел ще **декларираме** една **променлива**, на която ще присвоим **стойност**, равна на **40%** от резултата от **умножението** на площта на лозето и количеството грозде, което се получава от 1 кв. м.
-
-След като сме извършили тези пресмятания, сме готови да **пресметнем** и **количеството вино в литри**, което ще се получи от тази реколта. За тази цел **декларираме** още една **променлива**, в която ще пазим това **количество**, а от условието стигаме до извода, че за да го пресметнем, е нужно да **разделим количеството грозде в кг на 2.5**.
-
-![](/assets/chapter-3-2-images/04.Harvest-02.png)
-
-#### Извършване на проверки и обработка на изходните данни
-
-Вече сме направили нужните пресмятания и **следващата стъпка** е да **проверим** дали **получените литри** вино са **достатъчни**. За целта ще използваме **проста условна конструкция** от типа **`if-else`**, като в условието ще **проверим** дали **литрите вино** от реколтата са **повече от** или **равни** на **нужните литри**.
-
-Ако проверката върне резултат **`true`**, от условието на задачата виждаме, че на **първия ред** трябва да разпечатаме **виното, което сме получили от реколтата**. За да спазим условието **тази стойност** да бъде **закръглена до по-ниското цяло число**, ще използваме метода **`Math.Floor(…)`** при разпечатването й чрез **placeholder**.
-
-На втория ред има изискване да разпечатаме резултатите, като ги **закръглим към по-високото цяло число**, което ще направим с метода **`Math.Ceiling(…)`**. Стойностите, които трябва да разпечатаме, са на **оставащото количество вино** и **количеството вино, което се пада на един работник**. Оставащото количество вино е равно на **разликата** между **получените литри вино** и **нужните литри вино**. Стойността на това количество ще изчислим в нова променлива, която ще декларираме и инициализираме в **блок тялото** на **`if`**, **преди** разпечатването на първия ред. Количеството вино, което **се полага на един работник**, ще изчислим като **оставащото вино** го **разделим** на **броя** на работниците.
-
-![](/assets/chapter-3-2-images/04.Harvest-03.png)
-
-Ако проверката ни върне резултат **`false`** от условието на задачата виждаме, че трябва да **разпечатаме разликата** от **нужните литри** и **получените от тази реколта литри вино**. Има условие резултата да е **закръглен към по-ниското цяло число**, което ще направим с метода **`Math.Floor(…)`**.
-
-![](/assets/chapter-3-2-images/04.Harvest-04.png)
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/507#3](https://judge.softuni.bg/Contests/Practice/Index/507#3).
-
-
-## Задача: фирма
-
-Фирма **получава заявка за изработването на проект, за който са необходими** определен брой часове. Фирмата разполага с **определен брой дни**. **През 10% от дните служителите** са на обучение и **не могат да работят** по проекта. Един нормален **работен ден във фирмата е 8 часа**. Проектът е важен за фирмата и всеки служител задължително работи по проекта в **извънработно време по 2 часа на ден**.
-
-**Часовете** трябва да са **закръглени към по-ниско цяло число** (например → **6.98 часа** се закръглят на **6 часа**).
-
-Напишете програма, която изчислява дали **фирмата може да завърши проекта навреме** и **колко часа не достигат или остават**.
-
-### Входни данни
-
-Входът се чете от **конзолата** и съдържа **точно 3 реда**:
-* На **първия** ред са **необходимите часове** – **цяло число в интервала** [**0 … 200 000**].
-* На **втория** ред са **дните, с които фирмата разполага** – **цяло число в интервала** [**0 … 20 000**].
-* На **третия** ред е **броят на всички служители** – **цяло число в интервала** [**0 … 200**].
-
-### Изходни данни
-
-Да се **отпечата** на конзолата **един ред**:
-* Ако **времето е достатъчно**:
- * **"Yes!{оставащите часове} hours left."**.
-* Ако **времето НЕ Е достатъчно**:
- * **"Not enough time!{недостигащите часове} hours needed."**.
-
-### Примерен вход и изход
-
-|Вход|Изход|Вход|Изход|
-|----|-----|----|-----|
-|90
7
3
|Yes!99 hours left.|99
3
1|Not enough time!72 hours needed.|
-
-### Насоки и подсказки
-
-За да решим задачата, ще прочетем входа, ще извършим няколко проверки и изчисления и ще отпечатаме резултата.
-
-#### Обработка на входните данни
-
-За решението на задачата е нужно **първо** да преценим какви **типове променливи** ще използваме за **входните данни**.
-
-![](/assets/chapter-3-2-images/05.Firm-01.png)
-
-#### Помощни изчисления
-
-Следващата стъпка е да изчислим **количеството на работните часове** като умножим работните дни по 8 (всеки ден се работи по 8 часа) с броя на работниците и ги съберем с извънработното време. **Работните дни** са равни на **90% от дните**, с които фирмата разполага. **Извънработното време** е равно на резултата от умножението на броя на служителите с 2 (възможните часове извънработно време), като това също се умножава по броя на дните, с които фирмата разполага. От условието на задачата виждаме, че има условие **часовете** да са **закръглени към по-ниско цяло число**, което ще направим с метода **`Math.Floor(…)`**.
-
-![](/assets/chapter-3-2-images/05.Firm-02.png)
-
-#### Извършване на проверки
-
-След като сме направили изчисленията, които са ни нужни за да разберем стойността на **работните часове**, следва да направим проверка дали тези часове **достигат или остават допълнителни** такива.
-
-Ако **времето е достатъчно**, разпечатваме резултата, който се изисква в условието на задачата, а именно разликата между **работните часове и необходимите часове** за завършване на проекта.
-
-Ако **времето не е достатъчно**, разпечатваме допълнителните часове, които са нужни за завършване на проекта и са равни на разликата между **часовете за проекта** и **работните часове**.
-
-![](/assets/chapter-3-2-images/05.Firm-03.png)
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/507#4](https://judge.softuni.bg/Contests/Practice/Index/507#4).
-
diff --git a/chapter-03-simple-conditions.md b/chapter-03-simple-conditions.md
deleted file mode 100644
index 0b91ad4e9..000000000
--- a/chapter-03-simple-conditions.md
+++ /dev/null
@@ -1,828 +0,0 @@
-# Глава 3.1. Прости проверки
-
-В настоящата глава ще разгледаме **условните конструкции в езика C#**, чрез които нашата програма може да има различно действие, в зависимост от дадено условие. Ще обясним синтаксиса на условните оператори за проверки (**`if`** и **`if-else`**) с подходящи примери и ще видим в какъв диапазон живее една променлива (нейният **обхват**). Накрая ще разгледаме техники за **дебъгване**, чрез които постъпково да проследяваме пътя, който извървява нашата програма по време на своето изпълнение.
-
-## Видео
-
-
-
-
-## Сравняване на числа
-
-В програмирането можем да сравняваме стойности чрез следните **оператори**:
-
-* Оператор **`<`** (по-малко)
-* Оператор **`>`** (по-голямо)
-* Оператор **`<=`** (по-малко или равно)
-* Оператор **`>=`** (по-голямо или равно)
-* Оператор **`==`** (равно)
-* Оператор **`!=`** (различно)
-
-При сравнение резултатът е булева стойност – **`true`** или **`false`**, в зависимост от това дали резултатът от сравнението е истина или лъжа.
-
-### Примери за сравнение на числа
-
-![](assets/chapter-3-images/00.Comparing-numbers-01.png)
-
-Обърнете внимание, че при отпечатване на стойностите **`true`** и **`false`** в езика C#, те се отпечатват с главна буква, съответно **`True`** и **`False`**.
-
-### Оператори за сравнение
-
-В езика C# можем да използваме следните оператори за сравнение на данни:
-
-
-
-Оператор | Означение | Работи за |
-
-
-Проверка за равенство | == | числа, стрингове, дати |
-
-
-Проверка за различие | != |
-
-
-По-голямо | > | числа, дати, други сравними типове |
-
-
-По-голямо или равно | >= |
-
-
-По-малко | < |
-
-
-По-малко или равно | <= |
-
-
-
-Ето един пример:
-
-![](/assets/chapter-3-images/00.Comparing-numbers-02.png)
-
-## Прости проверки
-
-В програмирането често **проверяваме дадени условия** и извършваме различни действия, според резултата от проверката. Това става чрез проверката **`if`**, която има следната конструкция:
-
-```csharp
-if (булев израз)
-{
- // тяло на условната конструкция;
-}
-```
-
-### Пример: отлична оценка
-
-Въвеждаме оценка в конзолата и проверяваме дали тя е отлична (**`≥ 5.50`**).
-
-![](/assets/chapter-3-images/01.Еxcellent-result-01.png)
-
-Тествайте кода от примера локално. Опитайте да въведете различни оценки, например **4.75**, **5.49**, **5.50** и **6.00**. При оценки **по-малки от 5.50** програмата няма да изведе нищо, а при оценка **5.50 или по-голяма**, ще изведе “**Excellent!**”.
-
-#### Тестване в Judge системата
-
-Тествайте програмата от примера в judge системата на SoftUni:
-[https://judge.softuni.bg/Contests/Practice/Index/506#0](https://judge.softuni.bg/Contests/Practice/Index/506#0).
-
-
-## Проверки с if-else конструкция
-
-Конструкцията **`if`** може да съдържа и **`else`** клауза, с която да окажем конкретно действие в случай, че булевият израз (който е зададен в началото **`if (булев израз)`**) върне отрицателен резултат (**`false`**). Така построена, **условната конструкция** наричаме **`if-else`** и поведението ѝ е следното: ако резултатът от условието е **позитивен** (**`true`**) - извършваме едни действия, a когато е **негативен** (**`false`**) - други. Форматът на конструкцията е:
-
-```csharp
-if (булево условие)
-{
- // тяло на условната конструкция;
-}
-else
-{
- // тяло на else-конструкция;
-}
-
-```
-
-### Пример: отлична оценка или не
-
-Подобно на горния пример, въвеждаме оценка, проверяваме дали е отлична, но **изписваме резултат и в двата случая**.
-
-![](/assets/chapter-3-images/02.Excellent-or-not-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/506#1](https://judge.softuni.bg/Contests/Practice/Index/506#1).
-
-
-## За къдравите скоби { } след if / else
-
-Когато имаме **само една команда** в тялото на **`if` конструкцията**, можем да **пропуснем къдравите скоби**, обозначаващи тялото на условния оператор. Когато искаме да изпълним **блок от код** (група команди), къдравите скоби са **задължителни**. В случай че ги изпуснем, ще се изпълни **само първият ред** след **`if` клаузата**.
-
- |
-Добра практика е, винаги да слагаме къдрави скоби, понеже това прави кода ни по-четим и по-подреден. |
-
-
-Ето един пример, в който изпускането на къдравите скоби води до объркване:
-
-![](/assets/chapter-3-images/00.Brackets-tip-01.png)
-
-Изпълнението на горния код ще изведе следния резултат на конзолата:
-
-![](/assets/chapter-3-images/00.Brackets-tip-03.png)
-
-С къдрави скоби:
-
-![](/assets/chapter-3-images/00.Brackets-tip-02.png)
-
-На конзолата ще бъде отпечатано следното:
-
-![](/assets/chapter-3-images/00.Brackets-tip-04.png)
-
-### Пример: четно или нечетно
-
-Да се напише програма, която проверява, дали дадено цяло число е **четно** (even) или **нечетно** (odd).
-
-Задачата можем да решим с помощта на една **`if-else`** конструкция и оператора **`%`**, който връща **остатък при деление** на две числа.
-
-![](/assets/chapter-3-images/03.Even-or-odd-02.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/506#2](https://judge.softuni.bg/Contests/Practice/Index/506#2).
-
-
-### Пример: по-голямото число
-
-Да се напише програма, която чете две цели числа и извежда по-голямото от тях.
-
-Първата ни задача е да **прочетем** двете числа. След което, чрез проста **`if-else`** конструкция, в съчетание с **оператора за по-голямо** (**`>`**), да направим проверка. Част от кода е замъглена умишлено, за да изпробваме наученото до момента.
-
-![](/assets/chapter-3-images/04.Greater-number-02.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/506#3](https://judge.softuni.bg/Contests/Practice/Index/506#3).
-
-
-## Живот на променлива
-
-Всяка една променлива си има обхват, в който съществува, наречен **variable scope**. Този обхват уточнява къде една променлива може да бъде използвана. В езика C# областта, в която една променлива съществува, започва от реда, на който сме я **дефинирали** и завършва до първата затваряща къдрава скоба **}** (на метода, на **`if` конструкцията** и т.н.). За това е важно да знаем, че **всяка променлива, дефинирана вътре в тялото на `if`, няма да бъде достъпна извън него**, освен ако не сме я дефинирали по-нагоре в кода.
-
-В примера по-долу, на последния ред, на който се опитваме да отпечатаме променливата **`salary`**, която е дефинирана в **`if` конструкцията**, ще получим **грешка**, защото нямаме достъп до нея.
-
-![](/assets/chapter-3-images/00.Variable-scope-01.png)
-
-## Серии от проверки
-
-Понякога се налага да извършим серия от проверки, преди да решим какви действия ще изпълнява нашата програма. В такива случаи, можем да приложим конструкцията **`if-else if…-else` в серия**. За целта използваме следния формат:
-
-```csharp
-if (условие)
-{
- // тяло на условната конструкция;
-}
-else if (условие2)
-{
- // тяло на условната конструкция;
-}
-else if (условие3)
-{
- // тяло на условната конструкция;
-}
-…
-else
-{
- // тяло на else-конструкция;
-}
-```
-
-### Пример: число от 1 до 9 на английски
-
-Да се изпише число в интервала от 1 до 9 с текст на английски език (числото се чете от конзолата). Можем да прочетем числото и след това чрез **серия от проверки** отпечатваме съответстващата му английска дума:
-
-```csharp
-int num = int.Parse(Console.ReadLine());
-
-if (num == 1)
-{
- Console.WriteLine("one");
-}
-else if (num == 2)
-{
- Console.WriteLine("two");
-}
-else if (…)
-{
- …
-}
-else if (num == 9)
-{
- Console.WriteLine("nine");
-}
-else
-{
- Console.WriteLine("number too big");
-}
-```
-
-Програмната логика от примера по-горе **последователно сравнява** входното число от конзолата с цифрите от 1 до 9, като **всяко следващо сравнение се извършва, само в случай че предходното сравнение не е било истина**. В крайна сметка, ако никое от **`if`** условията не е изпълнено, се изпълнява последната **`else` клаузa**.
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/506#4](https://judge.softuni.bg/Contests/Practice/Index/506#4).
-
-
-## Упражнения: прости проверки
-
-За да затвърдим знанията си за условните конструкции **`if`** и **`if-else`**, ще решим няколко практически задачи.
-
-### Задача: бонус точки
-
-Дадено е **цяло число** – брой точки. Върху него се начисляват **бонус точки** по правилата, описани по-долу. Да се напише програма, която пресмята **бонус точките** за това число и **общия брой точки** с бонусите.
-
-- Ако числото е **до 100** включително, бонус точките са 5.
-- Ако числото е **по-голямо от 100**, бонус точките са **20%** от числото.
-- Ако числото е **по-голямо от 1000**, бонус точките са **10%** от числото.
-- Допълнителни бонус точки (начисляват се отделно от предходните):
- - За **четно** число -> + 1 т.
- - За число, което **завършва на 5** -> + 2 т.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-| --- | ---- |
-| 20 | 6
26 |
-| 175 | 37
212 |
-| 2703 | 270.3
2973.3 |
-| 15875 | 1589.5
17464.5 |
-
-#### Насоки и подсказки
-
-Основните и допълнителните бонус точки можем да изчислим с поредица от няколко **`if-else-if-else`** проверки. Като за **основните бонус точки имаме 3 случая** (когато въведеното число е до 100, между 100 и 1000 и по-голямо от 1000), а за **допълнителните бонус точки - още 2 случая** (когато числото е четно и нечетно).
-
-![](/assets/chapter-3-images/06.Bonus-score-01.png)
-
-Ето как би могло да изглежда решението на задачата в действие:
-
-![](/assets/chapter-3-images/06.Bonus-score-02.png)
-
-Обърнете внимание, че за тази задача judge е настроен да игнорира всичко, което не е число, така че можем да печатаме не само числата, но и уточняващ текст.
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/506#5](https://judge.softuni.bg/Contests/Practice/Index/506#5).
-
-
-### Задача: сумиране на секунди
-
-Трима спортни състезатели финишират за някакъв **брой секунди** (между **1** и **50**). Да се напише програма, която въвежда времената на състезателите и пресмята **сумарното им време** във формат "минути:секунди". Секундите да се изведат с **водеща нула** (2 -> "02", 7 -> "07", 35 -> "35").
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-| --- | ---- |
-| 35
45
44 | 2:04 |
-| 22
7
34 | 1:03 |
-| 50
50
49 | 2:29 |
-| 14
12
10 | 0:36 |
-
-#### Насоки и подсказки
-
-Първо сумираме трите числа, за да получим общия резултат в секунди. Понеже **1 минута = 60** секунди, ще трябва да изчислим броя минути и броя секунди в диапазона от 0 до 59:
-- Ако резултатът е между 0 и 59, отпечатваме 0 минути + изчислените секунди.
-- Ако резултатът е между 60 и 119, отпечатваме 1 минута + изчислените секунди минус 60.
-- Ако резултатът е между 120 и 179, отпечатваме 2 минути + изчислените секунди минус 120.
-- Ако секундите са по-малко от 10, извеждаме водеща нула преди тях.
-
-![](assets/chapter-3-images/07.Sum-seconds-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/506#6](https://judge.softuni.bg/Contests/Practice/Index/506#6).
-
-
-### Задача: конвертор за мерни единици
-
-Да се напише програма, която **преобразува разстояние** между следните **8 мерни единици**: **`m`, `mm`, `cm`, `mi`, `in`, `km`, `ft`, `yd`**. Използвайте съответствията от таблицата по-долу:
-
-| Входна единица | Изходна единица |
-| :-------------: | :--------------: |
-| 1 meter (m) | 1000 millimeters (mm) |
-| 1 meter (m) | 100 centimeters (cm) |
-| 1 meter (m) | 0.000621371192 miles (mi) |
-| 1 meter (m) | 39.3700787 inches (in) |
-| 1 meter (m) | 0.001 kilometers (km) |
-| 1 meter (m) | 3.2808399 feet (ft) |
-| 1 meter (m) | 1.0936133 yards (yd) |
-
-Входните данни се състоят от три реда:
-
-- Първи ред: число за преобразуване.
-- Втори ред: входна мерна единица.
-- Трети ред: изходна мерна единица (за резултата).
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-| --- | ---- |
-| 12
km
ft | 39370.0788 |
-| 150
mi
in | 9503999.99393599 |
-| 450
yd
km | 0.41147999937455 |
-
-#### Насоки и подсказки
-
-Прочитаме си входните данни, като към прочитането на мерните единици можем да добавим функцията **`ToLower()`**, която ще направи всички букви малки. Както виждаме от таблицата в условието, можем да конвертираме само **между метри и някаква друга мерна единица**. Следователно трябва първо да изчислим числото за преобразуване в метри. Затова трябва да направим набор от проверки, за да определим каква е входната мерна единица, а след това и за изходната мерна единица.
-
-![](/assets/chapter-3-images/08.Metric-converter-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/506#7](https://judge.softuni.bg/Contests/Practice/Index/506#7).
-
-
-## Дебъгване - прости операции с дебъгер
-
-До момента писахме доста код и често пъти в него имаше грешки, нали? Сега ще покажем един инструмент, с който можем да намираме грешките по-лесно.
-
-### Какво е "дебъгване"?
-
-**Дебъгване** е процесът на „**закачане**“ към изпълнението на програмата, който ни позволява да проследим поетапно процеса на изпълнение. Можем да следим **ред по ред** какво се случва с нашата програма, какъв път следва, какви стойности имат дефинираните променливи на всяка стъпка от дебъгването и много други неща, които ни позволяват да откриваме грешки (**бъгове**).
-
-![](/assets/chapter-3-images/00.Debugging-01.png)
-
-### Дебъгване във Visual Studio
-
-Чрез натискане на бутона [**F10**], стартираме програмата в **debug режим**. Преминаваме към **следващия ред** отново с [**F10**].
-
-![](/assets/chapter-3-images/00.Debugging-02.png)
-
-Чрез [**F9**] създаваме стопери – така наречените **breakpoints**, до които можем да стигнем директно използвайки [**F5**] при стартирането на програмата.
-
-## Упражнения: прости проверки
-
-Нека затвърдим наученото в тази глава с няколко задачи.
-
-### Празно Visual Studio решение (Blank Solution)
-
-Създаваме празно решение (**Blank Solution**) във Visual Studio, за да организираме по-добре решенията на задачите от упражненията – всяка задача ще бъде в отделен проект и всички проекти ще бъдат в общ solution.
-
-Стартираме Visual Studio. Създаваме нов **Blank Solution:** [**File**] -> [**New**] -> [**Project**].
-
-![](/assets/chapter-3-images/00.Visual-studio-01.png)
-
-Избираме от диалоговия прозорец [**Templates**] -> [**Other Project Types**] -> [**Visual Studio Solutions**] -> [**Blank Solution**] и даваме подходящо име на проекта, например “Simple-Conditions”:
-
-![](/assets/chapter-3-images/00.Visual-studio-02.png)
-
-Сега имаме създаден празен Visual Studio Solution (без проекти в него):
-
-![](/assets/chapter-3-images/00.Visual-studio-03.png)
-
-### Задача: проверка за отлична оценка
-
-Първата задача от упражненията за тази тема е да се напише **конзолна програма**, която **въвежда оценка** (десетично число) и отпечатва “**Excellent!**”, ако оценката е **5.50** или по-висока.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-| --- | ---- |
-| 6 | Excellent! |
-| 5 | (няма изход) |
-| 5.5 | Excellent! |
-| 5.49 | (няма изход) |
-
-#### Насоки и подсказки
-
-Създаваме **нов проект** в съществуващото Visual Studio решение. В **Solution Explorer** кликваме с десен бутон на мишката върху **Solution 'Simple-Conditions'**. Избираме [**Add**] -> [**New Project**]:
-
- ![](/assets/chapter-3-images/09.Excellent-result-01.png)
-
-Ще се отвори диалогов прозорец за избор на тип проект за създаване. Избираме **C# конзолно приложение** и задаваме име, например “`Excellent-Result`”:
-
- ![](/assets/chapter-3-images/09.Excellent-result-02.png)
-
-Вече имаме solution с едно конзолно приложение в него. Остава да напишем кода за решаване на задачата.
-
-За целта отиваме в тялото на метода **`Main(string[] args)`** и пишем следния код:
-
- ![](/assets/chapter-3-images/09.Excellent-result-03.png)
-
-**Стартираме** програмата с [**Ctrl+F5**], за да я **тестваме** с различни входни стойности:
-
- ![](/assets/chapter-3-images/09.Excellent-result-04.png)
-
- ![](/assets/chapter-3-images/09.Excellent-result-05.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/506#0](https://judge.softuni.bg/Contests/Practice/Index/506#0).
-
- ![](/assets/chapter-3-images/09.Excellent-result-06.png)
-
- ![](/assets/chapter-3-images/09.Excellent-result-07.png)
-
-
-### Задача: отлична оценка или не
-
-Следващата задача от тази тема е да се напише **конзолна програма**, която **въвежда оценка** (десетично число) и отпечатва “**Excellent!**”, ако оценката е **5.50** или по-висока, или “**Not excellent.**” в противен случай.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-| --- | ---- |
-| 6 | Excellent! |
-| 5 | Not excellent. |
-| 5.5 | Excellent! |
-| 5.49 | Not excellent. |
-
-#### Насоки и подсказки
-
-Първо създаваме **нов C# конзолен проект** в решението “**Simple-Conditions**”.
-
- - Кликаме с мишката върху решението в Solution Explorer и избираме [**Add**] -> [**New Project**].
-
- - Избираме [**Visual C#**] -> [**Windows**] -> [**Console Application**] и задаваме име “Excellent-or-Not”.
-
-Следва да **напишем кода** на програмата. Може да си помогнем с примерния код от картинката:
-
- ![](/assets/chapter-3-images/02.Excellent-or-not-01.png)
-
-Включваме режим на **автоматично превключване към текущия проект** като кликнем върху главния Solution с десния бутон на мишката и изберем [**Set StartUp Projects…**]:
-
- ![](/assets/chapter-3-images/02.Excellent-or-not-02.png)
-
- Ще се появи диалогов прозорец, от който трябва да се избере [**Startup Project**] -> [**Current selection**]:
-
- ![](/assets/chapter-3-images/02.Excellent-or-not-03.png)
-
-Сега **стартираме програмата**, както обикновено с [**Ctrl+F5**] и я тестваме дали работи коректно:
-
- ![](/assets/chapter-3-images/02.Excellent-or-not-04.png)
- ![](/assets/chapter-3-images/02.Excellent-or-not-05.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/506#1](https://judge.softuni.bg/Contests/Practice/Index/506#1).
-
- ![](/assets/chapter-3-images/02.Excellent-or-not-06.png)
-
-
-### Задача: четно или нечетно
-
-Да се напише програма, която въвежда **цяло число** и печата дали е **четно** или **нечетно**.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-| --- | ---- |
-| 2 | even |
-| 3 | odd |
-| 25 | odd |
-| 1024 | even |
-
-#### Насоки и подсказки
-
-Отново, първо добавяме **нов C# конзолен проект** в съществуващия solution. В метода **`static void Main()`** трябва да напишем, кода на програмата. Проверката дали дадено число е четно, може да се реализира с оператора **`%`**, който ще ни върне **остатъка при целочислено деление на 2** по следния начин: **`var isEven = (num % 2 == 0)`**.
-
-Остава да **стартираме** програмата с [**Ctrl+F5**] и да я тестваме:
-
-![](/assets/chapter-3-images/03.Even-or-odd-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/506#2](https://judge.softuni.bg/Contests/Practice/Index/506#2).
-
-
-### Задача: намиране на по-голямото число
-
-Да се напише програма, която въвежда **две цели числа** и отпечатва по-голямото от двете.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-|-----|------|
-|5
3| 5 |
-|3
5| 5 |
-|10
10| 10 |
-|-5
5| 5 |
-
-#### Насоки и подсказки
-
-Както обикновено, първо трябва да добавим **нов C# конзолен проект** в съществуващия solution. За кода на програмата ни е необходима единична **`if-else`** конструкция. Може да си помогнете частично с кода от картинката, който е умишлено замъглен, за да помислите как да го допишете сами:
-
-![](assets/chapter-3-images/04.Greater-number-02.png)
-
-След като сме готови с имплементацията на решението, **стартираме** програмата с [**Ctrl+F5**] и я тестваме:
-
-![](assets/chapter-3-images/04.Greater-number-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/506#3](https://judge.softuni.bg/Contests/Practice/Index/506#3).
-
-
-### Задача: изписване на число до 9 с думи
-
-Да се напише програма, която въвежда **цяло число в диапазона** [**0 … 9**] и го **изписва с думи** на английски език. Ако числото е извън диапазона, изписва “**number too big**”.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-| --- | ---- |
-| 5 | five |
-| 1 | one |
-| 9 | nine |
-| 10 | number too big |
-
-#### Насоки и подсказки
-
-Може да използваме поредица **`if-else`** конструкции, с които да разгледаме възможните **11 случая**.
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/506#4](https://judge.softuni.bg/Contests/Practice/Index/506#4).
-
-
-### Задача: познай паролата
-
-Да се напише програма, която **въвежда парола** (един ред с произволен текст) и проверява дали въведеното **съвпада** с фразата “**s3cr3t!P@ssw0rd**”. При съответствие да се изведе “**Welcome**”, а при несъответствие да се изведе “**Wrong password!**”.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-| --- | ---- |
-| qwerty | Wrong password! |
-| s3cr3t!P@ssw0rd | Welcome |
-| s3cr3t!p@ss | Wrong password! |
-
-#### Насоки и подсказки
-
-Използвайте **`if-else`** конструкцията.
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/506#8](https://judge.softuni.bg/Contests/Practice/Index/506#8).
-
-
-### Задача: число от 100 до 200
-
-Да се напише програма, която **въвежда цяло число** и проверява дали е **под 100**, **между 100 и 200** или **над 200**. Да се отпечатат съответно съобщения, като в примерите по-долу.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-| --- | ---- |
-| 95 | Less than 100 |
-| 120 | Between 100 and 200 |
-| 210 | Greater than 200 |
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/506#9](https://judge.softuni.bg/Contests/Practice/Index/506#9).
-
-
-### Задача: еднакви думи
-
-Да се напише програма, която **въвежда две думи** и проверява дали са еднакви. Да не се прави разлика между главни и малки букви. Да се изведе “**yes**” или “**no**”.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-| --- | ---- |
-| Hello
Hello | yes |
-| SoftUni
softuni | yes |
-| Soft
Uni | no |
-| beer
vodka | no |
-| HeLlO
hELLo | yes |
-
-#### Насоки и подсказки
-
-Преди сравняване на думите, ги обърнете в долен регистър, за да не оказва влияние размера на буквите (главни/малки): **`word = word.ToLower()`**.
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/506#10](https://judge.softuni.bg/Contests/Practice/Index/506#10).
-
-
-### Задача: информация за скоростта
-
-Да се напише програма, която **въвежда скорост** (десетично число) и отпечатва **информация за скоростта**. При скорост **до 10** (включително), отпечатайте “**slow**”. При скорост **над 10** и **до 50**, отпечатайте “**average**”. При скорост **над 50 и до 150**, отпечатайте “**fast**”. При скорост **над 150 и до 1000**, отпечатайте “**ultra fast**”. При по-висока скорост, отпечатайте “**extremely fast**”.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-| --- | ---- |
-| 8 | slow |
-| 49.5 | average |
-| 126 | fast |
-| 160 | ultra fast |
-| 3500 | extremely fast |
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/506#11](https://judge.softuni.bg/Contests/Practice/Index/506#11).
-
-
-### Задача: лица на фигури
-
-Да се напише програма, която **въвежда размерите на геометрична фигура** и **пресмята лицето й**. Фигурите са четири вида: квадрат (**square**), правоъгълник (**rectangle**), кръг (**circle**) и триъгълник (**triangle**).
-
-На първия ред на входа се чете вида на фигурата (`square`, `rectangle`, `circle`, `triangle`).
-* Ако фигурата е **квадрат**, на следващия ред се чете едно число – дължина на страната му.
-* Ако фигурата е **правоъгълник**, на следващите два реда се четат две числа – дължините на страните му.
-* Ако фигурата е **кръг**, на следващия ред се чете едно число – радиусa на кръга.
-* Ако фигурата е **триъгълник**, на следващите два реда се четат две числа – дължината на страната му и дължината на височината към нея.
-
-Резултатът да се закръгли до **3 цифри след десетичния знак**.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-| --- | ---- |
-| square
5 | 25 |
-| rectangle
7
2.5 | 17.5 |
-| circle
6 | 113.097 |
-| triangle
4.5
20 | 45 |
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/506#12](https://judge.softuni.bg/Contests/Practice/Index/506#12).
-
-
-### Задача: време + 15 минути
-
-Да се напише програма, която **въвежда час и минути** от 24-часово денонощие и изчислява колко ще е **часът след 15 минути**. Резултатът да се отпечата във формат **`hh:mm`**. Часовете винаги са между 0 и 23, а минутите винаги са между 0 и 59. Часовете се изписват с една или две цифри. Минутите се изписват винаги с по две цифри и с **водеща нула**, когато е необходимо.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-| --- | ---- |
-| 1
46 | 2:01 |
-| 0
01 | 0:16 |
-| 23
59 | 0:14 |
-| 11
08 | 11:23 |
-| 12
49 | 13:04 |
-
-#### Насоки и подсказки
-
-Добавете 15 минути и направете няколко проверки. Ако минутите надвишат 59, **увеличете часовете** с 1 и **намалете минутите** с 60. По аналогичен начин разгледайте случая, когато часовете надвишат 23. При печатането на минутите, **проверете за водеща нула**.
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/506#13](https://judge.softuni.bg/Contests/Practice/Index/506#13).
-
-
-### Задача: еднакви 3 числа
-
-Да се напише програма, в която се въвеждат **3 числа** и се отпечатва дали те са еднакви (**yes** / **no**).
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-| --- | ---- |
-| 5
5
5 | yes |
-| 5
4
5 | no |
-| 1
2
3 | no |
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/506#14](https://judge.softuni.bg/Contests/Practice/Index/506#14).
-
-
-### Задача: \* изписване на число от 0 до 100 с думи
-
-Да се напише програма, която превръща число в диапазона [**0 … 100**] в текст.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-| --- | ---- |
-| 25 | twenty five |
-| 42 | forty two |
-| 6 | six |
-
-#### Насоки и подсказки
-
-Проверете първо за **едноцифрени числа** и ако числото е едноцифрено, отпечатайте съответната дума за него. След това проверете за **двуцифрени числа**. Тях отпечатвайте на две части: лява част (**десетици** = числото / 10) и дясна част (**единици** = числото % 10). Ако числото има 3 цифри, трябва да е 100 и може да се разгледа като специален случай.
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/506#15](https://judge.softuni.bg/Contests/Practice/Index/506#15).
-
-
-## Графично (desktop) приложение
-
-След като направихме няколко упражнения върху **условни конструкции (проверки)**, сега нека направим нещо по-интересно: приложение с графичен потребителски интерфейс за конвертиране на валути. Ще използваме знанията от тази глава, за да избираме измежду няколко налични валути и съответно да извършваме пресмятания по различен курс спрямо избраната валута.
-
-### Задача: конвертор за валути
-
-Нека разгледаме как да създадем графично (**GUI**) приложение за **конвертиране на валути**. Приложението ще изглежда приблизително като на картинката по-долу:
-
-![](/assets/chapter-3-images/14.Converter-01.png)
-
-Този път създаваме нов **Windows Forms Application** с име “Currency-Converter”:
-
-![](/assets/chapter-3-images/14.Converter-02.png)
-
-**Нареждаме следните контроли** във формата:
-* Една кутийка за въвеждане на число (**`NumericUpDown`**)
-* Един падащ списък с валути (**`ComboBox`**)
-* Текстов блок за резултата (**`Label`**)
-* Няколко надписа (**`Label`**)
-
-Нагласяме **размерите** и свойствата им, за да изглеждат долу-горе като на картинката:
-
-![](/assets/chapter-3-images/14.Converter-03.png)
-
-Задаваме следните **настройки на контролите**:
-
-* **За главната форма** (**`Form`**), която съдържа всички контроли:
- * **`(name)`** = **`FormConverter`**
- * **`Text`** = "**`Currency Converter`**"
- * **`Font.Size`** = **`12`**
- * **`MaximizeBox`** = **`False`**
- * **`MinimizeBox`** = **`False`**
- * **`FormBorderStyle`** = **`FixedSingle`**
-
-
-* За **полето за въвеждане на число** (**`NumericUpDown`**):
- * **`(name)`** = **`numericUpDownAmount`**
- * **`Value`** = **`1`**
- * **`Minimum`** = **`0`**
- * **`Maximum`** = **`1000000`**
- * **`TextAlign`** = **`Right`**
- * **`DecimalPlaces`** = **`2`**
-
-
-* За **падащия списък с валутите** (**`ComboBox`**):
- * **`(name)`** = **`comboBoxCurrency`**
- * **`DropDownStyle`** = **`DropDownList`**
- * **`Items`** =
- * **EUR**
- * **USD**
- * **GBP**
-
-
-* За **текстовия блок за резултата** (**`Label`**):
- * **`(name)`** = **`labelResult`**
- * **`AutoSize`** = **`False`**
- * **`BackColor`** = **`PaleGreen`**
- * **`TextAlign`** = **`MiddleCenter`**
- * **`Font.Size`** = **`14`**
- * **`Font.Bold`** = **`True`**
-
-Трябва да хванем следните **събития**, за да напишем C# кода, който ще се изпълни при настъпването им:
-
-* Събитието **`ValueChanged`** на контролата за въвеждане на число **`numericUpDownAmount`**:
-
-![](/assets/chapter-3-images/14.Converter-04.png)
-
-* Събитието **`Load`** на формата **`FormConverter`**
-* Събитието **`SelectedIndexChanged`** на падащия списък за избор на валута **`comboBoxCurrency`**
-
-Ще използваме следния **C# код** за обработка на събитията:
-
-```csharp
-private void FormConverter_Load(object sender, EventArgs e)
-{
- this.comboBoxCurrency.SelectedItem = "EUR";
-}
-
-private void numericUpDownAmount_ValueChanged(object sender, EventArgs e)
-{
- ConvertCurrency();
-}
-
-private void comboBoxCurrency_SelectedIndexChanged(object sender, EventArgs e)
-{
- ConvertCurrency();
-}
-```
-
-Задачата на горния код е да избере при стартиране на програмата валута “**EUR**” и при промяна на стойностите в полето за сума или при смяна на валутата, да изчисли резултата, извиквайки **`ConvertCurrency()`** метода.
-
-Следва да напишем действието **`ConvertCurrency()`** за конвертиране на въведената сума от лева в избраната валута:
-
-```csharp
-private void ConvertCurrency()
-{
- var originalAmount = this.numericUpDownAmount.Value;
- var convertedAmount = originalAmount;
- if (this.comboBoxCurrency.SelectedItem.ToString() == "EUR")
- {
- convertedAmount = originalAmount / 1.95583m;
- }
- else if (this.comboBoxCurrency.SelectedItem.ToString() == "USD")
- {
- convertedAmount = originalAmount / 1.80810m;
- }
- else if (this.comboBoxCurrency.SelectedItem.ToString() == "GBP")
- {
- convertedAmount = originalAmount / 2.54990m;
- }
- this.labelResult.Text = originalAmount + " лв. = " +
- Math.Round(convertedAmount, 2) + " " + this.comboBoxCurrency.SelectedItem;
-}
-```
-
-Горният код взима **сумата** за конвертиране от полето **`numericUpDownAmount`** и **избраната валута** за резултата от полето **`comboBoxCurrency`**. След това с **условна конструкция**, според избраната валута, сумата се дели на **валутния курс** (който е фиксиран твърдо в сорс кода). Накрая се генерира текстово **съобщение с резултата** (закръглен до 2 цифри след десетичния знак) и се записва в зелената кутийка **`labelResult`**. Опитайте!
-
-Ако имате проблеми с примера по-горе, **гледайте видеото** в началото на тази глава или питайте във **форума на SoftUni**: https://softuni.bg/forum.
diff --git a/chapter-04-complex-conditions-exam-problems.md b/chapter-04-complex-conditions-exam-problems.md
deleted file mode 100644
index d6a0edcfb..000000000
--- a/chapter-04-complex-conditions-exam-problems.md
+++ /dev/null
@@ -1,542 +0,0 @@
-# Глава 4.2. По-сложни проверки – изпитни задачи
-
-В предходната глава се запознахме с **вложените условни конструкции** в езика C#. Чрез тях програмната логика в дадена програма може да бъде представена посредством **`if` конструкции**, които се съдържат една в друга. Разгледахме и условната конструкция **`switch-case`**, която позволява избор измежду списък от възможности. Следва да упражним и затвърдим наученото досега, като разгледаме няколко по-сложни задачи, давани на изпити. Преди да преминем към задачите, ще си припомним условните конструкции:
-
-## Вложени проверки
-
-```csharp
-if (condition1)
-{
- if (condition2)
- // тяло;
- else
- // тяло;
-}
-```
-
- |
-Запомнете, че не е добра практика да пишете **дълбоко вложени условни конструкции** (с ниво на влагане повече от три). Избягвайте влагане на повече от три условни конструкции една в друга. Това усложнява кода и затруднява неговото четене и разбиране. |
-
-
-## Switch-case проверки
-
-Когато работата на програмата ни зависи от стойността на една променлива, вместо да правим последователни проверки с множество **`if-else`** блокове, можем да използваме условната конструкция **`switch-case`**.
-
-```csharp
-switch (селектор)
-{
- case стойност1:
- конструкция;
- break;
- case стойност2:
- конструкция;
- break;
- default:
- конструкция;
- break;
-}
-```
-
-Конструкцията се състои от:
-* Селектор - израз, който се изчислява до някаква конкретна стойност. Типът на селектора може да бъде **цяло число**, **string** или **enum**.
-* Множество **`case`** етикети с команди след тях, завършващи с **`break`**.
-
-
-## Изпитни задачи
-
-Сега, след като си припомнихме как се използват условни конструкции и как се влагат една в друга условни конструкции, за реализиране на по-сложни проверки и програмна логика, нека решим няколко изпитни задачи.
-
-## Задача: навреме за изпит
-
-Студент трябва да отиде **на изпит в определен час** (например в 9:30 часа). Той идва в изпитната зала в даден **час на пристигане** (например 9:40). Счита се, че студентът е дошъл **навреме**, ако е пристигнал **в часа на изпита или до половин час преди това**. Ако е пристигнал **по-рано повече от 30 минути**, той е **подранил**. Ако е дошъл **след часа на изпита**, той е **закъснял**.
-
-Напишете програма, която въвежда време на изпит и време на пристигане и отпечатва дали студентът е дошъл **навреме**, дали е **подранил** или е **закъснял**, както и **с колко часа или минути** е подранил или закъснял.
-
-### Входни данни
-
-От конзолата се четат **четири цели числа** (по едно на ред):
-
-- Първият ред съдържа **час на изпита** – цяло число от 0 до 23.
-- Вторият ред съдържа **минута на изпита** – цяло число от 0 до 59.
-- Третият ред съдържа **час на пристигане** – цяло число от 0 до 23.
-- Четвъртият ред съдържа **минута на пристигане** – цяло число от 0 до 59.
-
-### Изходни данни
-
-На първия ред отпечатайте:
-
-- "**Late**", ако студентът пристига **по-късно** от часа на изпита.
-- "**On time**", ако студентът пристига **точно** в часа на изпита или до 30 минути по-рано.
-- "**Early**", ако студентът пристига повече от 30 минути **преди** часа на изпита.
-
-Ако студентът пристига с поне минута разлика от часа на изпита, отпечатайте на следващия ред:
-
-- "**mm minutes before the start**" за идване по-рано с по-малко от час.
-- "**hh:mm hours before the start**" за подраняване с 1 час или повече. Минутите винаги печатайте с 2 цифри, например "1:05".
-- "**mm minutes after the start**" за закъснение под час.
-- "**hh:mm hours after the start**" за закъснение от 1 час или повече. Минутите винаги печатайте с 2 цифри, например "1:03".
-
-### Примерен вход и изход
-
-| Вход | Изход | Вход | Изход |
-|---|---|---|---|
-|9
30
9
50|Late
20 minutes after the start|16
00
15
00|Early
1:00 hours before the start|
-|9
00
8
30|On time
30 minutes before the start|9
00
10
30|Late
1:30 hours after the start|
-|14
00
13
55|On time
5 minutes before the start|11
30
8
12|Early
3:18 hours before the start|
-
-
-| Вход | Изход |
-|---|---|
-|10
00
10
00|On time|
-|11
30
10
55|Early
35 minutes before the start|
-|11
30
12
29|Late
59 minutes after the start|
-
-### Насоки и подсказки
-
- |
- Препоръчително е да прочетете няколко пъти заданието на дадена задача, като си водите записки и си скицирате примерите, докато разсъждавате над тях, преди да започнете писането на код. |
-
-#### Обработка на входните данни
-
-Съгласно заданието очакваме да ни бъдат подадени **четири** поредни реда с различни **цели числа**. Разглеждайки дадените параметри можем да се спрем на типа **`int`**, тъй като той удовлетворява очакваните ни стойности. Едновременно **четем** входа и **парсваме** стринговата стойност към избрания от нас тип данни за **цяло число**.
-
-![](/assets/chapter-4-2-images/01.On-time-for-the-exam-01.png)
-
-Разглеждайки очаквания изход можем да създадем променливи, които да съдържат различните видове изходни данни, с цел да избегнем използването на т.нар. **"magic strings"** в кода.
-
-![](/assets/chapter-4-2-images/01.On-time-for-the-exam-02.png)
-
-#### Изчисления
-
-След като прочетохме входа, можем да започнем да разписваме логиката за изчисление на резултата. Нека първо да изчислим **началния час** на изпита **в минути** за по-лесно и точно сравнение.
-
-![](/assets/chapter-4-2-images/01.On-time-for-the-exam-03.png)
-
-Нека изчислим по същата логика и **времето на пристигане** на студента.
-
-![](/assets/chapter-4-2-images/01.On-time-for-the-exam-04.png)
-
-Остава ни да пресметнем разликата в двете времена, за да можем да определим **кога** и с **какво време спрямо изпита** е пристигнал студентът.
-
-![](/assets/chapter-4-2-images/01.On-time-for-the-exam-05.png)
-
-Следващата ни стъпка е да направим необходимите **проверки и изчисления**, като накрая ще изведем резултата от тях. Нека разделим изхода на **две** части:
-
-- Първо да покажем кога е пристигнал студентът - дали е **подранил**, **закъснял** или е пристигнал **навреме**. За целта ще се спрем на **`if-else`** конструкция.
-- След това ще покажем **времевата разлика**, ако студентът пристигне в **различно време** от началния **час на изпита**.
-
-С цел да спестим една допълнителна проверка (**`else`**), можем по подразбиране да приемем, че студентът е закъснял.
-
-След което, съгласно условието, проверяваме дали разликата във времената е **повече от 30 минути**. Ако това е така, приемаме, че е **подранил**. Ако не влезем в първото условие, то следва да проверим само дали **разликата е по-малка или равна на нула (**`<= 0`**)**, с което проверяваме условието, студентът да е дошъл в рамките на от **0 до 30 минути** преди изпита.
-
-При всички останали случаи приемаме, че студентът е **закъснял**, което сме направили **по подразбиране**, и не е нужна допълнителна проверка.
-
-![](/assets/chapter-4-2-images/01.On-time-for-the-exam-06.png)
-
-За финал ни остава да разберем и покажем с **каква разлика от времето на изпита е пристигнал**, както и дали тази разлика показва време на пристигане **преди или след изпита**.
-
-Правим проверка дали разликата ни е **над** един час, за да изпишем съответно часове и минути в желания по задание **формат**, или е **под** един час, за да покажем **само минути** като формат и описание.
-
-Остава да направим още една проверка - дали времето на пристигане на студента е **преди** или **след** началото на изпита.
-
-![](/assets/chapter-4-2-images/01.On-time-for-the-exam-07.png)
-
-#### Отпечатване на резултата
-
-Накрая остава да изведем резултата на конзолата. По задание, ако студентът е дошъл точно на време (**без нито една минута разлика**), не трябва да изваждаме втори резултат. Затова правим следната **проверка**:
-
-![](/assets/chapter-4-2-images/01.On-time-for-the-exam-08.png)
-
-Реално за целите на задачата извеждането на резултата **на конзолата** може да бъде направен и в по-ранен етап - още при самите изчисления. Това като цяло не е много добра практика. **Защо?**
-
-Нека разгледаме идеята, че кодът ни не е 10 реда, а 100 или 1000! Някой ден ще се наложи извеждането на резултата да не бъде в конзолата, а да бъде записан във **файл** или показан на **уеб приложение**. Тогава на колко места в кода ще трябва да бъдат нанесени корекции поради тази смяна? И дали няма да пропуснем някое място?
-
- |
-Винаги си мислете за кода с логическите изчисления, като за отделна част от, различна от обработката на входните и изходните данни. Той трябва да може да работи без значение как му се подават данните и къде ще трябва да бъде показан резултатът. |
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/509#0](https://judge.softuni.bg/Contests/Practice/Index/509#0).
-
-
-## Задача: пътешествие
-
-Странно, но повечето хора си плануват от рано почивката. Млад програмист разполага с **определен бюджет** и свободно време в даден **сезон**.
-
-Напишете програма, която да приема **на входа бюджета и сезона**, а **на изхода** да изкарва **къде ще почива** програмистът и **колко ще похарчи**.
-
-**Бюджетът определя дестинацията, а сезонът определя колко от бюджета ще бъде изхарчен**. Ако е **лято**, ще почива на **къмпинг**, а **зимата - в хотел**. Ако е в **Европа**, **независимо от сезона**, ще почива в **хотел**. Всеки **къмпинг** или **хотел**, **според дестинацията**, има **собствена цена**, която отговаря на даден **процент от бюджета**:
-
-- При **100 лв. или по-малко** – някъде в **България**.
- - **Лято** – **30%** от бюджета.
- - **Зима** – **70%** от бюджета.
-- При **1000 лв. или по малко** – някъде на **Балканите**.
- - **Лято** – **40%** от бюджета.
- - **Зима** – **80%** от бюджета.
-- При **повече от 1000 лв**. – някъде из **Европа**.
- - При пътуване из Европа, независимо от сезона, ще похарчи **90% от бюджета**.
-
-### Входни данни
-
-Входът се чете от конзолата и се състои от **два реда**:
-
-- На **първия** ред получаваме **бюджета** - **реално число** в интервал [**10.00 … 5000.00**].
-- На **втория** ред – **един** от двата възможни сезона: "**summer**" или "**winter**".
-
-### Изходни данни
-
-На конзолата трябва да се отпечатат **два реда**.
-
-- На **първи** ред – "**Somewhere in {дестинация}**" измежду "**Bulgaria**", "**Balkans**" и "**Europe**".
-- На **втори** ред – "{**Вид почивка**} – {**Похарчена сума**}".
- - **Почивката** може да е между "**Camp**" и "**Hotel**".
- - **Сумата** трябва да е **закръглена с точност до втория символ след десетичния знак**.
-
-### Примерен вход и изход
-
-| Вход | Изход |
-|---|---|
-|50
summer|Somewhere in Bulgaria
Camp - 15.00|
-|75
winter|Somewhere in Bulgaria
Hotel - 52.50|
-|312
summer|Somewhere in Balkans
Camp - 124.80|
-|678.53
winter|Somewhere in Balkans
Hotel - 542.82|
-|1500
summer|Somewhere in Europe
Hotel - 1350.00|
-
-### Насоки и подсказки
-
-Типично, както и при другите задачи, можем да разделим решението на няколко части: четене на входните данни, изчисления, отпечатване на резултата.
-
-#### Обработка на входните данни
-
-Прочитайки внимателно условието разбираме, че очакваме **два** реда с входни данни. Първият параметър е **реално число**, за което е добре да изберем подходящ тип на променливата. За по-голяма точност в изчисленията ще се спрем на **`decimal`** като тип за бюджета, а за сезона - **`string`**.
-
-![](/assets/chapter-4-2-images/02.Trip-01.png)
-
- |
-Винаги преценявайте какъв **тип стойност** се подава при входните данни, както и към какъв тип трябва да бъдат конвертирани тези данни, за да работят правилно създадените от вас програмни конструкции! |
-
-
-**Пример**: Когато в задачата е необходимо да направите парични изчисления, използвайте **`decimal`** за по-голяма точност.
-
-#### Изчисления
-
-Нека си създадем и инициализираме нужните за логиката и изчисленията променливи.
-
-![](/assets/chapter-4-2-images/02.Trip-02.png)
-
-Подобно на примера в предната задача, можем да инициализираме променливите с някои от изходните резултати - с цел спестяване на допълнително инициализиране.
-
-Разглеждайки отново условието на задачата забелязваме, че основното разпределение за това къде ще почиваме се определя от **стойността на подадения бюджет**, т.е. основната ни логика се разделя на два случая:
-* Ако бюджетът е **по-малък** от дадена стойност.
-* Ако е **по-малък** от друга стойност, или е **повече** от дадена гранична стойност.
-
-Спрямо това как си подредим логическата схема (в какъв ред ще обхождаме граничните стойности), ще имаме повече или по-малко проверки в условията. **Помислете защо!**
-
-След това е необходимо да направим проверка за стойността на **подадения сезон**. Спрямо нея ще определим какъв процент от бюджета ще бъде похарчен, както и къде ще почива програмистът - в **хотел** или на **къмпинг**.
-
-Пример за един от възможните подходи за решение е:
-
-![](/assets/chapter-4-2-images/02.Trip-03.png)
-
-![](/assets/chapter-4-2-images/02.Trip-04.png)
-
-![](/assets/chapter-4-2-images/02.Trip-05.png)
-
-Винаги можем да инициализираме дадена стойност на параметъра и след това да направим само една проверка. **Това ни спестява една логическа стъпка**.
-
-Например следният блок:
-
-![](/assets/chapter-4-2-images/02.Trip-03.png)
-
-може да бъде съкратен до този си вид:
-
-![](/assets/chapter-4-2-images/02.Trip-06.png)
-
-#### Отпечатване на резултата
-
-Остава ни да покажем изчисления резултат на конзолата:
-
-![](/assets/chapter-4-2-images/02.Trip-07.png)
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/509#1](https://judge.softuni.bg/Contests/Practice/Index/509#1).
-
-
-## Задача: операции между числа
-
-Напишете програма, която чете **две цели числа (n1 и n2)** и **оператор**, с който да се извърши дадена **математическа операция** с тях. Възможните операции са: **събиране** (**`+`**), **изваждане** (**`-`**), **умножение** (**`*`**), **деление** (**`/`**) и **модулно деление** (**`%`**). При събиране, изваждане и умножение на конзолата трябва да се отпечата резултата и дали той е **четен** или **нечетен**. При обикновено деление – **единствено резултата**, а при модулно деление – **остатъка**. Трябва да се има предвид, че **делителят може да е равен на нула** (**`= 0`**), а на нула не се дели. В този случай трябва да се отпечата **специално съобщение**.
-
-### Входни данни
-
-От конзолата се прочитат **3 реда**:
-
-- **N1** – **цяло число** в интервала [**0 … 40 000**].
-- **N2** – **цяло число** в интервала [**0 … 40 000**].
-- **Оператор** – **един символ** измежду: "**+**", "**-**", "**\***", "**/**", "**%**".
-
-### Изходни данни
-
-Да се отпечата на конзолата **един ред**:
-
-- Ако операцията е **събиране**, **изваждане** или **умножение**:
- - **"{N1} {оператор} {N2} = {резултат} – {even/odd}"**.
-- Ако операцията е **деление**:
- - **"{N1} / {N2} = {резултат}"** – резултатът е **форматиран** до **втория символ след десетичния знак**.
-- Ако операцията е **модулно деление**:
- - **"{N1} % {N2} = {остатък}"**.
-- В случай на **деление на 0 (нула)**:
- - **"Cannot divide {N1} by zero"**.
-
-### Примерен вход и изход
-
-| Вход | Изход | Вход | Изход |
-|---|---|---|---|
-|123
12
/|123 / 12 = 10.25|112
0
/|Cannot divide 112 by zero|
-|10
3
%|10 % 3 = 1|10
0
%|Cannot divide 10 by zero|
-
-| Вход | Изход |
-|---|---|
-|10
12
+|10 + 12 = 22 - even|
-|10
1
-|10 - 1 = 9 - odd|
-|7
3
\*|7 * 3 = 21 - odd|
-
-### Насоки и подсказки
-
-Задачата не е сложна, но има доста редове код за писане.
-
-#### Обработка на входните данни
-
-След прочитане на условието разбираме, че очакваме **три** реда с входни данни. На първите **два** реда ни се подават **цели числа** (в указания от заданието диапазон), а на третия - **аритметичен символ**.
-
-![](/assets/chapter-4-2-images/03.Operations-01.png)
-
-#### Изчисления
-
-Нека си създадем и инициализираме нужните за логиката и изчисленията променливи. В едната ще пазим **резултата от изчисленията**, а другата ще използваме за **крайния изход** на програмата.
-
-![](/assets/chapter-4-2-images/03.Operations-02.jpg)
-
-Прочитайки внимателно условието разбираме, че има случаи, в които не трябва да правим **никакви** изчисления, а просто да изведем резултат.
-
-Следователно първо може да проверим дали второто число е **`0`** (нула), както и дали операцията е **деление** или **модулно деление**, след което да инициализираме резултата.
-
-![](/assets/chapter-4-2-images/03.Operations-03.jpg)
-
-Нека сложим резултата като стойност при инициализацията на **`output`** параметъра. По този начин може да направим само **една проверка** - дали е необходимо да **преизчислим** и **заменим** този резултат.
-
-Спрямо това кой подход изберем, следващата ни проверка ще бъде или обикновен **`else`** или единичен **`if`**. В тялото на тази проверка, с допълнителни проверки за начина на изчисление на резултата спрямо подадения оператор, можем да разделим логиката спрямо **структурата** на очаквания **резултат**.
-
-От условието можем да видим, че за **събиране** (**`+`**), **изваждане** (**`-`**) или **умножение** (**`*`**) очакваният резултат има еднаква структура: **"{n1} {оператор} {n2} = {резултат} – {even/odd}"**, докато за **деление** (**`/`**) и за **модулно деление** (**`%`**) резултатът има различна структура.
-
-![](/assets/chapter-4-2-images/03.Operations-04.png)
-
-Завършваме с проверките за събиране, изваждане и умножение:
-
-![](/assets/chapter-4-2-images/03.Operations-05.jpg)
-
-При кратки и ясни проверки, както в горния пример за четно и нечетно число, е възможно да се използва **тернарен оператор**. Нека разгледаме възможната проверка **с** и **без** тернарен оператор.
-
-**Без използване на тернарен оператор** кодът е по-дълъг, но се чете лесно:
-
-![](/assets/chapter-4-2-images/03.Operations-06.png)
-
-**С използване на тернарен оператор** кодът е много по-кратък, но може да изисква допълнителни усилия, за да бъде прочетен и разбран като логика:
-
-![](/assets/chapter-4-2-images/03.Operations-07.png)
-
-#### Отпечатване на резултата
-
-Накрая ни остава да покажем изчисления резултат на конзолата:
-
-![](/assets/chapter-4-2-images/03.Operations-08.png)
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/509#2](https://judge.softuni.bg/Contests/Practice/Index/509#2).
-
-
-## Задача: билети за мач
-
-**Група запалянковци** решили да си закупят **билети за Евро 2016**. Цената на билета се определя спрямо **две** категории:
-
-- **VIP** – **499.99** лева.
-- **Normal** – **249.99** лева.
-
-Запалянковците **имат определен бюджет**, a **броят на хората** в групата определя какъв процент от бюджета трябва **да се задели за транспорт**:
-
-- **От 1 до 4** – 75% от бюджета.
-- **От 5 до 9** – 60% от бюджета.
-- **От 10 до 24** – 50% от бюджета.
-- **От 25 до 49** – 40% от бюджета.
-- **50 или повече** – 25% от бюджета.
-
-**Напишете програма**, която да **пресмята дали с останалите пари от бюджета** могат да си **купят билети за избраната категория**, както и **колко пари** ще им **останат или ще са им нужни**.
-
-### Входни данни
-
-Входът се чете от **конзолата** и съдържа **точно 3 реда**:
-
-- На **първия** ред е **бюджетът** – реално число в интервала [**1 000.00 … 1 000 000.00**].
-- На **втория** ред е **категорията** – "**VIP**" или "**Normal**".
-- На **третия** ред е **броят на хората в групата** – цяло число в интервала [**1 … 200**].
-
-### Изходни данни
-
-Да се **отпечата** на конзолата **един ред**:
-
-- Ако **бюджетът е достатъчен**:
- - "**Yes! You have {N} leva left.**" – където **N са останалите пари** на групата.
-- Ако **бюджетът НЕ Е достатъчен**:
- - "**Not enough money! You need {М} leva.**" – където **М е сумата, която не достига**.
-
-**Сумите** трябва да са **форматирани с точност до два символа след десетичния знак**.
-
-### Примерен вход и изход
-
-| Вход | Изход | Обяснения |
-|---|---|---|
-|1000
Normal
1|Yes! You have 0.01 leva left.|**1 човек : 75%** от бюджета отиват за **транспорт**.
**Остават:** 1000 – 750 = **250**.
Категория **Normal**: билетът **струва 249.99 * 1 = 249.99**
249.99 < 250: **остават му** 250 – 249.99 = **0.01**|
-
-| Вход | Изход | Обяснения |
-|---|---|---|
-|30000
VIP
49|Not enough money! You need 6499.51 leva.|**49 човека: 40%** от бюджета отиват за **транспорт**.
Остават: 30000 – 12000 = 18000.
Категория **VIP**: билетът **струва** 499.99 * 49.
**24499.510000000002** < 18000.
**Не стигат** 24499.51 - 18000 = **6499.51**|
-
-### Насоки и подсказки
-
-Ще прочетем входните данни и ще извършим изчисленията, описани в условието на задачата, за да проверим дали ще стигнат парите.
-
-#### Обработка на входните данни
-
-Нека прочетем внимателно условието и да разгледаме какво се очаква да получим като **входни данни**, какво се очаква да **върнем като резултат**, както и кои са **основните стъпки** при разбиването **на логическата схема**.
-
-Като за начало, нека обработим и запазим входните данни в **подходящи** за това **променливи**:
-
-![](assets/chapter-4-2-images/04.Match-tickets-01.png)
-
-#### Изчисления
-
-Нека създадем и инициализираме нужните за изчисленията променливи:
-
-![](assets/chapter-4-2-images/04.Match-tickets-02.png)
-
-Нека отново прегледаме условието. Трябва да направим **две** различни блок изчисления.
-
-От първите изчисления трябва да разберем каква част от бюджета ще трябва да заделим за **транспорт**. За логиката на тези изчисления забелязваме, че има значение единствено **броят на хората в групата**. Следователно ще направим логическата разбивка спрямо броя на запалянковците.
-
-Ще използваме условна конструкция - поредица от **`if-else`** блокове.
-
-![](assets/chapter-4-2-images/04.Match-tickets-03.png)
-
-От вторите изчисления трябва да намерим каква сума ще ни е необходима за закупуване на **билети за групата**. Според условието, това зависи единствено от типа на билетите, които трябва да закупим.
-
-Нека използваме **`switch-case`** условна конструкция.
-
-![](assets/chapter-4-2-images/04.Match-tickets-04.png)
-
-След като сме изчислили какви са **транспортните разходи** и **разходите за билети**, ни остава да изчислим крайния резултат и да разберем **ще успее** ли групата от запалянковци да отиде на Евро 2016 или **няма да успее** при така подадените параметри.
-
-За извеждането на резултата, за да си спестим една **`else` проверка** в конструкцията, приемаме, че групата по подразбиране ще може да отиде на Евро 2016.
-
-![](assets/chapter-4-2-images/04.Match-tickets-05.png)
-
-#### Отпечатване на резултата
-
-Накрая ни остава да покажем изчисления резултат на конзолата.
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/509#3](https://judge.softuni.bg/Contests/Practice/Index/509#3).
-
-
-## Задача: хотелска стая
-
-Хотел предлага **два вида стаи**: **студио и апартамент**.
-
-Напишете програма, която изчислява **цената за целия престой за студио и апартамент**. **Цените** зависят от **месеца** на престоя:
-
-| **Май и октомври** | **Юни и септември** | **Юли и август** |
-|---|---|---|
-|Студио – **50** лв./нощувка|Студио – **75.20** лв./нощувка|Студио – **76** лв./нощувка|
-|Апартамент – **65** лв./нощувка|Апартамент – **68.70** лв./нощувка|Апартамент – **77** лв./нощувка|
-
-Предлагат се и следните **отстъпки**:
-
-- За **студио**, при **повече** от **7** нощувки през **май и октомври**: **5% намаление**.
-- За **студио**, при **повече** от **14** нощувки през **май и октомври**: **30% намаление**.
-- За **студио**, при **повече** от **14** нощувки през **юни и септември**: **20% намаление**.
-- За **апартамент**, при **повече** от **14** нощувки, **без значение от месеца: 10% намаление**.
-
-### Входни данни
-
-Входът се чете от **конзолата** и съдържа **точно два реда**:
-
-- На **първия** ред е **месецът** – **May**, **June**, **July**, **August**, **September** или **October**.
-- На **втория** ред е **броят на нощувките** – **цяло число в интервала** [**0 … 200**].
-
-### Изходни данни
-
-Да се **отпечатат** на конзолата **два реда**:
-
-- На **първия ред**: "**Apartment: { цена за целият престой } lv**".
-- На **втория ред**: "**Studio: { цена за целият престой } lv**".
-
-**Цената за целия престой да е форматирана с точност до два символа след десетичния знак**.
-
-### Примерен вход и изход
-
-| Вход | Изход |Обяснения |
-|---|---|---|
-|May
15|Apartment: 877.50 lv.
Studio: 525.00 lv.| През **май**, при повече от **14 нощувки**, намаляваме цената на **студиото с 30%** (50 – 15 = 35), а на **апартамента – с 10%** (65 – 6.5 =58.5).
Целият престой в **апартамент – 877.50** лв.
Целият престой **в студио – 525.00** лв.|
-
-| Вход | Изход |
-|---|---|
-|June
14|Apartment: 961.80 lv.
Studio: 1052.80 lv|
-|August
20|Apartment: 1386.00 lv.
Studio: 1520.00 lv.|
-
-### Насоки и подсказки
-
-Ще прочетем входните данни и ще извършим изчисленията според описания ценоразпис и правилата за отстъпките и накрая ще отпечатаме резултата.
-
-#### Обработка на входните данни
-
-Съгласно условието на задачата очакваме да получим два реда входни данни - на първия ред **месеца, през който се планува престой**, а на втория - **броя нощувки**.
-
-Нека обработим и запазим входните данни в подходящи за това параметри:
-
-![](assets/chapter-4-2-images/05.Hotel-room-01.png)
-
-#### Изчисления
-
-След това да създадем и инициализираме нужните за изчисленията променливи:
-
-![](assets/chapter-4-2-images/05.Hotel-room-02.png)
-
-Разглеждайки отново условието забелязваме, че основната ни логика зависи от това какъв **месец** ни се подава, както и от броя на **нощувките**.
-
-Като цяло има различни подходи и начини да се направят въпросните проверки, но нека се спрем на основна условна конструкция **`switch-case`**, като в различните **`case` блокове** ще използваме съответно условни конструкции **`if`** и **`if-else`**.
-
-Нека започнем с първата група месеци: **Май** и **Октомври**. За тези два месеца **цената на престой е еднаква** и за двата типа настаняване - в **студио** и в **апартамент**. Съответно остава само да направим вътрешна проверка спрямо **броят нощувки**, за да преизчислим **съответната цена** (ако се налага).
-
-![](assets/chapter-4-2-images/05.Hotel-room-03.png)
-
-За следващите месеци **логиката** и **изчисленията** ще са донякъде **идентични**.
-
-![](assets/chapter-4-2-images/05.Hotel-room-04.png)
-
-![](assets/chapter-4-2-images/05.Hotel-room-05.png)
-
-След като изчислихме какви са съответните цени и крайната сума за престоя - нека да си изведем във форматиран вид резултата, като преди това го запишем в изходните ни **параметри** - **`studioInfo`** и **`apartmentInfo`**.
-
-![](assets/chapter-4-2-images/05.Hotel-room-06.png)
-
-За изчисленията на изходните параметри използваме **метода** **`decimal.Round(Decimal, Int32)`**.
-Този метод **закръгля десетично** число до **зададен брой цифри** след десетичния знак. За целта, подаваме на метода данни от тип **`decimal`** (**`studioRent`**, **`apartamentPrice`**) и цяло число (**`int`**). В нашия случай ще закръглим десетичното число до **две цифри** след десетичната точка.
-
-#### Отпечатване на резултата
-
-Накрая остава да покажем изчислените резултати на конзолата.
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/509#4](https://judge.softuni.bg/Contests/Practice/Index/509#4).
diff --git a/chapter-04-complex-conditions.md b/chapter-04-complex-conditions.md
deleted file mode 100644
index 12d9531d8..000000000
--- a/chapter-04-complex-conditions.md
+++ /dev/null
@@ -1,834 +0,0 @@
-# Глава 4.1. По-сложни проверки
-
-В **настоящата** глава ще разгледаме **вложените проверки** в езика **C#**, чрез които нашата програма може да съдържа **условни конструкции**, в които има **вложени други условни конструкции**. Наричаме ги **"вложени"**, защото **поставяме `if` конструкция** в **друга `if` конструкция**. Ще разгледаме и **по-сложни логически условия** с подходящи примери.
-
-## Видео
-
-
-
-
-## Вложени проверки
-
-Доста често програмната логика налага използването на **`if`** или **`if-else`** конструкции, които се съдържат една в друга. Те биват наричани **вложени** **`if`** или **`if-else`** конструкции. Както се подразбира от названието **"вложени"**, това са **`if`** или **`if-else`** конструкции, които са поставени в други **`if`** или **`else`** конструкции.
-
-```csharp
-if (condition1)
-{
- if (condition2)
- {
- // тяло;
- }
- else
- {
- // тяло;
- }
-}
-```
-
-Влагането на повече от три условни конструкции една в друга не се счита за добра практика и трябва да се избягва, най-вече чрез оптимизиране на структурата/алгоритъма на кода и/или чрез използването на друг вид условна конструкция, който ще разгледаме по-надолу в тази глава.
-
-### Пример: обръщение според възраст и пол
-
-Според въведени **възраст** (десетично число) и **пол** (**m** / **f**) да се отпечата обръщение:
-* “**Mr.**” – мъж (пол “**m**”) на 16 или повече години.
-* “**Master**” – момче (пол “**m**”) под 16 години.
-* “**Ms.**” – жена (пол “**f**”) на 16 или повече години.
-* “**Miss**” – момиче (пол “**f**”) под 16 години.
-
-#### Примерен вход и изход
-
-|Вход|Изход|Вход|Изход|
-|----|----|----|----|
-|12
f|Miss|17
m|Mr.|
-
-|Вход|Изход|Вход|Изход|
-|----|----|----|----|
-|25
f|Ms.|13.5
m|Master|
-
-#### Решение
-
-Можем да забележим, че **изходът** на програмата **зависи от няколко неща**. **Първо** трябва да проверим какъв **пол** е въведен и **после** да проверим **възрастта**. Съответно ще използваме **няколко** **`if-else`** блока. Тези блокове ще бъдат **вложени**, т.е. от **резултата** на първия ще **определим** кои от **другите** да изпълним.
-
-![](/assets/chapter-4-images/01.Personal-titles-01.jpg)
-
-След прочитане на входните данни от конзолата ще трябва да се изпълни следната примерна програмна логика:
-
-![](/assets/chapter-4-images/01.Personal-titles-02.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/508#0](https://judge.softuni.bg/Contests/Practice/Index/508#0).
-
-
-### Пример: квартално магазинче
-
-Предприемчив българин отваря по едно **квартално магазинче** в **няколко града** с различни **цени** за следните **продукти**:
-
-|продукт / град|Sofia|Plovdiv|Varna|
-|:-------:|:-------:|:-------:|:-------:|
-|coffee
water
beer
sweets
peanuts|0.50
0.80
1.20
1.45
1.60
|0.40
0.70
1.15
1.30
1.50
|0.45
0.70
1.10
1.35
1.55|
-
-По даден **град** (стринг), **продукт** (стринг) и **количество** (десетично число) да се пресметне цената.
-
-#### Примерен вход и изход
-
-|Вход|Изход|Вход|Изход|
-|-------|-------|-------|-------|
-|coffee
Varna
2|0.9|peanuts
Plovdiv
1|1.5|
-
-|Вход|Изход|Вход|Изход|
-|-------|-------|-------|-------|
-|beer
Sofia
6|7.2|water
Plovdiv
3|2.1|
-
-#### Решение
-
-**Прехвърляме** всички букви в **долен регистър** с функцията **`.ToLower()`**, за да сравняваме продукти и градове **без значение** от малки/главни букви.
-
-![](/assets/chapter-4-images/02.Small-shop-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/508#1](https://judge.softuni.bg/Contests/Practice/Index/508#1).
-
-
-## По-сложни проверки
-
-Нека разгледаме как можем да правим по-сложни логически проверки. Може да използваме логическо "**И**" (**`&&`**), логическо "**ИЛИ**" (**`||`**), логическо **отрицание** (**`!`**) и **скоби** (**`()`**).
-
-### Логическо "И"
-
-Както видяхме, в някои задачи се налага да правим **много проверки наведнъж**. Но какво става, когато за да изпълним някакъв код, трябва да бъдат изпълнени **повече** условия и **не искаме** да правим **отрицание** (**`else`**) за всяко едно от тях? Вариантът с вложените **`if` блокове** е валиден, но кодът би изглеждал много **неподреден** и със сигурност - **труден** за четене и поддръжка.
-
-Логическо "**И**" (оператор **`&&`**) означава няколко условия да са **изпълнени едновременно**. В сила е следната таблица на истинност:
-
-|a|b|a && b|
-|-----|-----|-----|
-|true
true
false
false|true
false
true
false|true
false
false
false|
-
-### Как работи операторът && ?
-
-Операторът **`&&`** приема **няколко булеви** (условни) израза, които имат стойност **`true`** или **`false`**, и ни връща **един** булев израз като **резултат**. Използването му **вместо** редица вложени **`if`** блокове прави кода **по-четлив**, **подреден** и **лесен** за поддръжка. Но как **работи**, когато поставим **няколко** условия едно след друго? Както видяхме по-горе, логическото **"И"** връща **`true`**, **само** когато приема като **аргументи изрази** със стойност **`true`**. Съответно, когато имаме **последователност** от аргументи, логическото "И" **проверява** или докато **свършат** аргументите, или докато не **срещне** аргумент със стойност **`false`**.
-
-**Пример**:
-
-```csharp
-bool a = true;
-bool b = true;
-bool c = false;
-bool d = true;
-bool result = a && b && c && d;
-// false (като d не се проверява)
-```
-
-Програмата ще се изпълни по **следния** начин: **започва** проверката от **`а`**, **прочита** я и отчита, че има стойност **`true`**, след което **проверява** **`b`**. След като е **отчела**, че **`a`** и **`b`** връщат стойност **`true`**, **проверява следващия** аргумент. Стига до **`c`** и отчита, че променливата има стойност **`false`**. След като програмата отчете, че аргументът **`c`** има стойност **`false`**, тя изчислява израза **до `c`**, **независимо** каква е стойността на **`d`**. За това проверката на **`d`** се **прескача** и целият израз бива изчислен като **`false`**.
-
-![](/assets/chapter-4-images/00.Logical-and-01.png)
-
-### Пример: точка в правоъгълник
-
-Проверка дали **точка {x, y}** се намира **вътре в правоъгълника {x1, y1} – {x2, y2}**. Входните данни се четат от конзолата и се състоят от 6 реда: десетичните числа **x1**, **y1**, **x2**, **y2**, **x** и **y** (като се гарантира, че **x1 < x2** и **y1 < y2**).
-
-#### Примерен вход и изход
-
-|Вход |Изход |Визуализация|
-|-----|------|:------:|
-|2
-3
12
3
8
-1|Inside|![shop](/assets/chapter-4-images/03.Point-in-rectangle-01.png)|
-
-#### Решение
-
-Една точка е вътрешна за даден многоъгълник, ако **едновременно** са изпълнени следните четири условия:
-
-* Точката е надясно от лявата страна на правоъгълника.
-* Точката е наляво от дясната страна на правоъгълника.
-* Точката е надолу от горната страна на правоъгълника.
-* Точката е нагоре от долната страна на правоъгълника.
-
-![](/assets/chapter-4-images/03.Point-in-rectangle-03.PNG)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/508#2](https://judge.softuni.bg/Contests/Practice/Index/508#2).
-
-
-## Логическо "ИЛИ"
-
-Логическо **"ИЛИ"** (оператор **`||`**) означава да е **изпълнено поне едно** измежду няколко условия. Подобно на оператора **`&&`**, логическото **"ИЛИ"** приема няколко аргумента от **булев** (условен) тип и връща **`true`** или **`false`**. Лесно можем да се досетим, че **получаваме** като стойност **`true`**, винаги когато поне **един** от аргументите има стойност **`true`**. Типичен пример за логиката на този оператор е следният:
-
-В училище учителят казва: "Иван или Петър да измият дъската". За да бъде изпъл¬нено това условие (дъската да бъде измита), е възможно само Иван да я измие, само Петър да я измие или и двамата да го направят.
-
-|a|b|a || b|
-|:-----:|:-----:|:-----:|
-|true
true
false
false|true
false
true
false|true
true
true
false|
-
-
-### Как работи операторът || ?
-
-Вече научихме какво **представлява** логическото **"ИЛИ"**. Но как всъщност се реализира? Както при логическото **"И"**, програмата **проверява** от ляво на дясно **аргументите**, които са зададени. За да получим **`true`** от израза, е необходимо **само един** аргумент да има стойност **`true`**, съответно проверката **продължава** докато се срещне **аргумент** с **такава** стойност или докато **не свършат** аргументите.
-
-Ето един **пример** за оператора **`||`** в действие:
-
-```csharp
-bool a = false;
-bool b = true;
-bool c = false;
-bool d = true;
-bool result = a || b || c || d;
-// true (като c и d не се проверяват)
-```
-
-Програмата **проверява `а`**, отчита, че има стойност **`false`** и продължава. Стигайки до **`b`**, отчита, че има стойност **`true`** и целият **израз** получава стойност **`true`**, **без** да се проверява **`c`** и **`d`**, защото техните стойности **не биха променили** резултата на израза.
-
-### Пример: плод или зеленчук
-
-Нека проверим дали даден **продукт** е **плод** или **зеленчук**. Плодовете "**fruit**" са **banana**, **apple**, **kiwi**, **cherry**, **lemon** и **grapes**. Зеленчуците "**vegetable**" са **tomato**, **cucumber**, **pepper** и **carrot**. Всички останали са "**unknown**".
-
-#### Примерен вход и изход
-
-|Вход|Изход|
-|----|----|
-|banana
tomato
java|fruit
vegetable
unknown|
-
-#### Решение
-
-Трябва да използваме няколко условни проверки с логическо "**ИЛИ**" (**`||`**):
-
-![](/assets/chapter-4-images/04.Fruit-or-vegetable-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/508#3](https://judge.softuni.bg/Contests/Practice/Index/508#3).
-
-
-## Логическо отрицание
-
-**Логическо отрицание** (оператор **`!`**) означава да **не е изпълнено** дадено условие.
-
-|a|!a|
-|:----:|:----:|
-|true|false|
-
-Операторът **`!`** приема като **аргумент** булева променлива и **обръща** стойността ѝ.
-
-### Пример: невалидно число
-
-Дадено **число е валидно**, ако е в диапазона [**100 … 200**] или е **0**. Да се направи проверка за **невалидно** число.
-
-#### Примерен вход и изход
-
-|Вход|Изход|
-|----|----|
-|75|invalid|
-|150| (няма изход)|
-|220|invalid|
-
-#### Решение
-
-![](/assets/chapter-4-images/05.Invalid-number-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/508#4](https://judge.softuni.bg/Contests/Practice/Index/508#4).
-
-
-## Операторът скоби `()`
-
-Както останалите оператори в програмирането, така и операторите **`&&`** и **`||`** имат приоритет, като в случая **`&&`** е с по-голям приоритет от **`||`**. Операторът **`()`** служи за **промяна на приоритета на операторите** и се изчислява пръв, също както в математиката. Използването на скоби също така придава по-добра четимост на кода и се счита за добра практика.
-
-
-## По-сложни логически условия
-
-Понякога условията може да са доста сложни, така че да изискват дълъг булев израз или поредица от проверки. Да разгледаме няколко такива примера.
-
-### Пример: точка върху страна на правоъгълник
-
-Да се напише програма, която проверява дали **точка {x, y}** се намира **върху някоя от страните на правоъгълник {x1, y1} - {x2, y2}**. Входните данни се четат от конзолата и се състоят от 6 реда: десетичните числа **x1**, **y1**, **x2**, **y2**, **x** и **y** (като се гарантира, че **x1 < x2** и **y1 < y2**). Да се отпечата "**Border**" (точката лежи на някоя от страните) или "**Inside / Outside**" (в противен случай).
-
-![](/assets/chapter-4-images/06.Point-on-rectangle-border-01.png)
-
-#### Примерен вход и изход
-
-|Вход|Изход|Вход|Изход|
-|-----|-----|-----|-----|
-|2
-3
12
3
12
-1|Border|2
-3
12
3
8
-1|Inside / Outside|
-
-#### Решение
-
-Точка лежи върху някоя от страните на правоъгълник, ако:
-* **x** съвпада с **x1** или **x2** и същевременно **y** е между **y1** и **y2** или
-* **y** съвпада с **y1** или **y2** и същевременно **x** е между **x1** и **x2**.
-
-![](/assets/chapter-4-images/06.Point-on-rectangle-border-02.png)
-
-Предходната проверка може да се опрости по този начин:
-
-![](/assets/chapter-4-images/06.Point-on-rectangle-border-03.png)
-
-Вторият начин с допълнителните булеви променливи е по-дълъг, но е много по-разбираем от първия, нали? Препоръчваме ви когато пишете булеви условия, да ги правите **лесни за четене и разбиране**, а не кратки. Ако се налага, ползвайте допълнителни променливи със смислени имена. Имената на булевите променливи трябва да подсказват каква стойност се съхранява в тях.
-
-Остава да допишете кода, за да отпечатва “**Inside / Outside**”, ако точката не е върху някоя от страните на правоъгълника.
-
-#### Тестване в Judge системата
-
-След като допишете решението, може да го тествате тук: [https://judge.softuni.bg/Contests/Practice/Index/508#5](https://judge.softuni.bg/Contests/Practice/Index/508#5).
-
-
-### Пример: магазин за плодове
-
-Магазин за плодове в **работни дни** продава на следните **цени**:
-
-|Плод|Цена|
-|:-----:|:-----:|
-|banana
apple
orange
grapefruit
kiwi
pineapple
grapes|2.50
1.20
0.85
1.45
2.70
5.50
3.85|
-
-В почивни дни цените са **по-високи**:
-
-|Плод|Цена|
-|:-----:|:-----:|
-|banana
apple
orange
grapefruit
kiwi
pineapple
grapes|2.70
1.25
0.90
1.60
3.00
5.60
4.20|
-
-Напишете програма, която **чете** от конзолата **плод** (banana / apple / …), **ден от седмицата** (Monday / Tuesday / …) и **количество (десетично число)** и **пресмята цената** според цените от таблиците по-горе. Резултатът да се отпечата **закръглен с 2 цифри след десетичния знак**. При **невалиден ден** от седмицата или **невалидно име** на плод да се отпечата **“error”**.
-
-#### Примерен вход и изход
-
-|Вход|Изход|Вход|Изход|
-|----|----|----|----|
-|orange
Sunday
3|2.70|kiwi
Monday
2.5|6.75|
-
-|Вход|Изход|Вход|Изход|
-|----|----|----|----|
-|grapes
Saturday
0.5|2.10|tomato
Monday
0.5|error|
-
-#### Решение
-
-![](/assets/chapter-4-images/07.Fruit-shop-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/508#6](https://judge.softuni.bg/Contests/Practice/Index/508#6).
-
-
-### Пример: търговски комисионни
-
-Фирма дава следните **комисионни** на търговците си според **града**, в който работят и **обема на продажбите s**:
-
-|Град|0 <= s <= 500|500 < s <= 1000|1000 < s <= 10000|s > 10000|
-|:----:|:----:|:----:|:----:|:----:|
-|Sofia
Varna
Plovdiv|5%
4.5%
5.5%|7%
7.5%
8%|8%
10%
12%|12%
13%
14.5%|
-
-Напишете **програма**, която чете име на **град** (стринг) и обем на **продажбите** (десетично число) и изчислява размера на комисионната. Резултатът да се изведе закръглен с **2 десетични цифри след десетичния знак**. При **невалиден град или обем на продажбите** (отрицателно число) да се отпечата "**error**".
-
-#### Примерен вход и изход
-
-|Вход|Изход|Вход|Изход|Вход|Изход|
-|-----|-----|-----|-----|-----|-----|
-|Sofia
1500|120.00|Plovdiv
499.99|27.50|Kaspichan
-50|error|
-
-#### Решение
-
-При прочитането на входа можем да обърнем града в малки букви (с функцията **`.ToLower()`**). Първоначално задаваме комисионната да е **`-1`**. Тя ще бъде променена, ако градът и ценовият диапазон бъдат намерени в таблицата с комисионните.
-За да изчислим комисионната според града и обема на продажбите се нуждаем от няколко вложени **`if` проверки**, както е в примерния код по-долу:
-
-![](/assets/chapter-4-images/08.Trade-comissions-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/508#7](https://judge.softuni.bg/Contests/Practice/Index/508#7).
-
-
- |
-Добра практика е да използваме блокове, които заграждаме с къдрави скоби { } след if и else . Също така, препоръчително e при писане да отместваме кода след if и else с една табулация навътре, за да направим кода по-лесно четим. |
-
-
-
-## Условна конструкция switch-case
-
-Конструкцията **`switch-case`** работи като поредица **`if-else`** блокове. Когато работата на програмата ни зависи от стойността на **една променлива**, вместо да правим последователни проверки с **`if-else`** блокове, можем да **използваме** условната конструкция **`switch`**. Тя се използва за **избор измежду списък с възможности**. Конструкцията сравнява дадена стойност с определени константи и в зависимост от резултата предприема действие.
-
-**Променливата**, която искаме да **сравняваме**, поставяме в **скобите след оператора `switch`** и се нарича "**селектор**". Тук **типът трябва да е сравним** (числа, стрингове). **Последователно** започва **сравняването** с всяка една **стойност**, която **се намира** след **`case` етикетите**. При съвпадение започва изпълнението на кода от съответното място и продължава, докато стигне оператора **`break`**. В някои програмни езици (като C и C++) **`break`** може да се изпуска, за да се изпълнява код от друга **`case`** конструкция, докато не стигне до въпросния оператор. В C# обаче, наличието на **`break`** е **задължителен** за **всеки `case`**, който съдържа изпълнение на програмна логика. При **липса** на **съвпадение**, се изпълнява **`default`** конструкцията, **ако** такава **съществува**.
-
-```csharp
-switch (селектор)
-{
- case стойност1:
- конструкция;
- break;
- case стойност2:
- конструкция;
- break;
- case стойност3:
- конструкция;
- break;
- …
- default:
- конструкция;
- break;
-}
-```
-
-### Пример: ден от седмицата
-
-Нека напишем програма, която принтира **деня от седмицата** (на английски) според **въведеното число** (1 … 7) или "**Error!**", ако е подаден невалиден ден.
-
-#### Примерен вход и изход
-
-|Вход|Изход|
-|-----|-----|
-|1
7
-1|Monday
Sunday
Error!|
-
-#### Решение
-
-![](/assets/chapter-4-images/09.Day-of-week-01.png)
-
- |
-Добра практика е на първо място да поставяме онези case случаи, които обработват най-често случилите се ситуации, а case конструкциите, обработващи по-рядко възникващи ситуации, да оставим в края преди default конструкцията. Друга добра практика е да подреждаме case етикетите в нарастващ ред, без значение дали са целочислени или символни. |
-
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/508#8](https://judge.softuni.bg/Contests/Practice/Index/508#8).
-
-
-### Множество етикети в switch-case
-
-В **C#** имаме възможността да **използваме множество `case`** етикети, когато те трябва да изпълняват **един и същи** код. При този начин на записване, когато **програмата** ни намери **съвпадение**, ще изпълни **следващия** срещнат код, тъй като **след** съответния **`case`** етикет **липсва код** за изпълнение и **`break`** оператор.
-
-```csharp
-switch (селектор)
-{
- case стойност1:
- case стойност2:
- case стойност3:
- конструкция;
- break;
- case стойност4:
- case стойност5:
- конструкция;
- break;
- …
- default:
- конструкция;
- break;
-}
-```
-
-### Пример: вид животно
-
-Напишете програма, която принтира вида на животно според името му:
-
-* dog -> **mammal**
-* crocodile, tortoise, snake -> **reptile**
-* others -> **unknown**
-
-#### Примерен вход и изход
-
-|Вход|Изход|Вход|Изход|Вход|Изход|
-|-----|-----|-----|-----|-----|-----|
-|tortoise|reptile|dog|mammal|elephant|unknown|
-
-#### Решение
-
-Можем да решим задачата чрез **`switch`**-**`case`** проверки с множество етикети по следния начин:
-
-![](/assets/chapter-4-images/10.Animal-type-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/508#9](https://judge.softuni.bg/Contests/Practice/Index/508#9).
-
-
-## Какво научихме от тази глава?
-
-Да си припомним новите конструкции и програмни техники, с които се запознахме в тази глава.
-
-### Вложени проверки
-
-```csharp
-if (condition1)
-{
- if (condition2)
- // тяло;
- else
- // тяло;
-}
-```
-
-### По-сложни проверки с &&, ||, ! и ()
-
-```csharp
-if ((x == left || x == right) && y >= top && y <= bottom)
- Console.WriteLine(…);
-```
-
-#### Switch-case проверки
-
-```csharp
-switch (селектор)
-{
- case стойност1:
- конструкция;
- break;
- case стойност2:
- case стойност3:
- конструкция;
- break;
- …
- default:
- конструкция;
- break;
-}
-```
-
-
-## Упражнения: по-сложни проверки
-
-Нека сега да упражним работата с по-сложни проверки. Да решим няколко практически задачи.
-
-### Задача: кино
-
-В една кинозала столовете са наредени в **правоъгълна** форма в **r** реда и **c** колони. Има три вида прожекции с билети на **различни** цени:
-
-* **Premiere** – премиерна прожекция, на цена **12.00** лева.
-* **Normal** – стандартна прожекция, на цена **7.50** лева.
-* **Discount** – прожекция за деца, ученици и студенти на намалена цена от **5.00** лева.
-
-Напишете програма, която въвежда **тип прожекция** (стринг), брой **редове** и брой **колони** в залата (цели числа) и изчислява **общите приходи** от билети при **пълна зала**. Резултатът да се отпечата във формат като в примерите по-долу - с 2 цифри след десетичния знак.
-
-#### Примерен вход и изход
-
-|Вход|Изход|Вход|Изход|
-|----|-----|----|-----|
-|Premiere
10
12|1440.00 leva|Normal
21
13|2047.50 leva|
-
-#### Насоки и подсказки
-
-При прочитането на входа можем да обърнем типа на прожекцията в малки букви (с функцията **`.ToLower()`**). Създаваме и инициализираме променлива, която ще ни съхранява изчислените приходи. В друга променлива пресмятаме пълния капацитет на залата. Използваме **`switch-case`** условна конструкция, за да изчислим прихода в зависимост от вида на прожекцията и отпечатваме резултата на конзолата в зададения формат (потърсете нужната **C#** функционалност в интернет).
-
-Примерен код (части от кода са замъглени с цел да се стимулира самостоятелно мислене и решение):
-
-![](/assets/chapter-4-images/11.Cinema-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/508#10](https://judge.softuni.bg/Contests/Practice/Index/508#10).
-
-
-### Задача: волейбол
-
-Влади е студент, живее в София и си ходи от време на време до родния град. Той е много запален по волейбола, но е зает през работните дни и играе **волейбол** само през **уикендите** и в **празничните дни**. Влади играе **в София** всяка **събота**, когато **не е на работа** и **не си пътува до родния град**, както и в **2/3 от празничните дни**. Той пътува до **родния си град h пъти** в годината, където играе волейбол със старите си приятели в **неделя**. Влади **не е на работа 3/4 от уикендите**, в които е в София. Отделно, през **високосните години** Влади играе с **15% повече** волейбол от нормалното. Приемаме, че годината има точно **48 уикенда**, подходящи за волейбол.
-Напишете програма, която изчислява **колко пъти Влади е играл волейбол** през годината. **Закръглете резултата** надолу до най-близкото цяло число (напр. 2.15 -> 2; 9.95 -> 9).
-
-Входните данни се четат от конзолата:
-
-* Първият ред съдържа думата “**leap**” (високосна година) или “**normal**” (нормална година с 365 дни).
-* Вторият ред съдържа цялото число **p** – брой празници в годината (които не са събота или неделя).
-* Третият ред съдържа цялото число **h** – брой уикенди, в които Влади си пътува до родния град.
-
-#### Примерен вход и изход
-
-|Вход|Изход|Вход|Изход|
-|-----|-----|-----|-----|
-|leap
5
2|45|normal
3
2|38|
-
-|Вход|Изход|Вход|Изход|
-|-----|-----|-----|-----|
-|normal
11
6|44|leap
0
1|41|
-
-#### Насоки и подсказки
-
-Стандартно прочитаме входните данни от конзолата като за избягване на грешки при въвеждане обръщаме текста в малки букви с функцията **`.ToLower()`**. Последователно пресмятаме **уикендите прекарани в София**, **времето за игра в София** и **общото време за игра**. Накрая проверяваме дали годината е **високосна**, правим допълнителни изчисления при необходимост и извеждаме резултата на конзолата **закръглен надолу** до най-близкото **цяло число** (потърсете **C#** клас с такава функционалност в интернет).
-
-Примерен код (части от кода са замъглени с цел да се стимулира самостоятелно мислене и решение):
-
-![](/assets/chapter-4-images/11.Volleyball-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/508#11](https://judge.softuni.bg/Contests/Practice/Index/508#11).
-
-
-### Задача: * точка във фигурата
-
-Фигура се състои от **6 блокчета с размер h \* h**, разположени като на фигурата. Долният ляв ъгъл на сградата е на позиция {0, 0}. Горният десен ъгъл на фигурата е на позиция {**2\*h**, **4\*h**}. На фигурата координатите са дадени при **h = 2**:
-
-![](/assets/chapter-4-images/13.Point-in-the-figure-01.png)
-
-Да се напише програма, която въвежда цяло число **h** и координатите на дадена **точка {x, y}** (цели числа) и отпечатва дали точката е вътре във фигурата (**inside**), вън от фигурата (**outside**) или на някоя от стените на фигурата (**border**).
-
-#### Примерен вход и изход
-
-|Вход|Изход|Вход|Изход|
-|-----|-----|-----|-----|
-|2
3
10|outside|2
3
1|inside|
-
-|Вход|Изход|Вход|Изход|
-|-----|-----|-----|-----|
-|2
2
2|border|2
6
0|border|
-
-|Вход|Изход|Вход|Изход|
-|----|-----|-----|-----|
-|2
0
6|outside|15
13
55|outside|
-
-|Вход|Изход|Вход|Изход|
-|-----|-----|-----|-----|
-|15
29
37|inside|15
37
18|outside|
-
-|Вход|Изход|Вход|Изход|
-|-----|-----|-----|-----|
-|15
-4
7|outside|15
30
0|border|
-
-#### Насоки и подсказки
-
-Примерна логика за решаване на задачата (не е единствената правилна):
-
-* Може да разделим фигурата на **два правоъгълника** с обща стена:
-
-
-
-* Една точка е **външна (outside)** за фигурата, когато е едновременно **извън** двата правоъгълника.
-* Една точка е **вътрешна (inside)** за фигурата, ако е вътре в някой от правоъгълниците (изключвайки стените им) или лежи върху общата им стена.
-* В **противен случай** точката лежи на стената на правоъгълника (**border**).
-
-Примерен код (части от кода са замъглени с цел да се стимулира самостоятелно мислене и решение):
-
-![](/assets/chapter-4-images/13.Point-in-the-figure-02.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/508#12](https://judge.softuni.bg/Contests/Practice/Index/508#12).
-
-
-## Упражнения: графично приложение с по-сложни проверки
-
-В тази глава научихме как можем да правим **проверки с нетривиални условия**. Нека сега приложим тези знания, за да създадем нещо интересно: настолно приложение, което визуализира точка и правоъгълник. Това е прекрасна визуализация за една от задачите от упражненията.
-
-### Задача: * точка и правоъгълник – графично (GUI) приложение
-
-Задачата, която си поставяме е да се разработи графично (**GUI**) приложение за **визуализация на точка и правоъгълник**. Приложението трябва да изглежда приблизително по следния начин:
-
-![](/assets/chapter-4-images/14.Point-in-rectangle-gui-01.png)
-
-![](/assets/chapter-4-images/14.Point-in-rectangle-gui-02.png)
-
-![](/assets/chapter-4-images/14.Point-in-rectangle-gui-03.png)
-
-От контролите вляво се задават координатите на **два от ъглите на правоъгълник** (десетични числа) и координатите на **точка**. Приложението **визуализира графично** правоъгълника и точката и изписва дали точката е **вътре** в правоъгълника (**Inside**), **вън** от него (**Outside**) или на някоя от стените му (**Border**).
-Приложението **премества и мащабира** координатите на правоъгълника и точката, за да бъдат максимално големи, но да се събират в полето за визуализация в дясната страна на приложението.
-
- |
-Внимание: това приложение е значително по-сложно от предходните графични приложения, които разработвахме до сега, защото изисква ползване на функции за чертане и нетривиални изчисления за преоразмеряване и преместване на правоъгълника и точката. Следват инструкции за изграждане на приложението стъпка по стъпка. |
-
-
-Създаваме нов проект **Windows Forms Application** с подходящо име, например “Point-and-Rectangle”:
-
-![](/assets/chapter-4-images/14.Point-in-rectangle-gui-04.png)
-
-**Нареждаме контролите** във формата, както е показано на фигурата по-долу:
-
- * 6 кутийки за въвеждане на число (**`NumericUpDown`**).
- * Надписи (**`Label`**) пред всяка кутийка за въвеждане на число.
- * Бутон (**`Button`**) за изчертаване на правоъгълника и точката.
- * Текстов блок за резултата (**`Label`**).
-
-Нагласяме **размерите** и **свойствата** на контролите, за да изглеждат приблизително като на картинката:
-
-![](/assets/chapter-4-images/14.Point-in-rectangle-gui-05.png)
-
-Задаваме следните препоръчителни настройки на контролите:
-
-* За **главната форма (`Form`)**, която съдържа всички контроли:
- * (name) = **`FormPointAndRectangle`**
- * **`Text`** = **`Point and Rectangle`**
- * **`Font.Size`** = **`12`**
- * **`Size`** = **`700`**, **`410`**
- * **`MinimumSize`** = **`500`**, **`400`**
- * **`FormBorderStyle`** = **`FixedSingle`**
-* За **полетата за въвеждане на число (`NumericUpDown`)**:
- * (name) = **`numericUpDownX1`**; **`numericUpDownY1`**; **`numericUpDownX2`**; **`numericUpDownY2`**; **`numericUpDownX`**; **`numericUpDownY`**
- * **`Value`** = **`2`**; **`-3`**; **`12`**; **`3`**; **`8`**; **`-1`**
- * **`Minimum`** = **`-100000`**
- * **`Maximum`** = **`100000`**
- * **`DecimalPlaces`** = **`2`**
-* За **бутона (`Button`)** за **визуализация** на правоъгълника и точката:
- * (name) = **`buttonDraw`**
- * **Text** = **`Draw`**
-* За **текстовия блок за резултата (`Label`)**:
- * (name) = **`labelLocation`**
- * **`AutoSize`** = **`false`**
- * **`BackColor`** = **`PaleGreen`**
- * **`TextAlign`** = **`MiddleCenter`**
-* За **полето с чертежа (`PictureBox`)**:
- * (name) = **`pictureBox`**
- * **`Anchor`** = **`Top`**, **`Bottom`**, **`Left`**, **`Right`**
-
-Следва да хванем следните **събития**, за да напишем C# кода, който ще се изпълни при настъпването им:
-
-* Събитието **`Click`** на бутона **`buttonDraw`** (извиква се при натискане на бутона).
-* Събитието **`ValueChanged`** на контролите за въвеждане на числа **`numericUpDownX1`**, **`numericUpDownY1`**, **`numericUpDownX2`**, **`numericUpDownY2`**, **`numericUpDownX`** и **`numericUpDownY`** (извиква се при промяна на стойността в контролата за въвеждане на число).
-* Събитието **`Load`** на формата **`FormPointAndRectangle`** (извиква се при стартиране на приложението, преди да се появи главната форма на екрана).
-* Събитието **`Resize`** на формата **`FormPointAndRectangle`** (извиква се при промяна на размера на главната формата).
-
-Всички изброени по-горе събития ще изпълняват едно и също действие – **`Draw()`**, което ще визуализира правоъгълника и точката и ще показва дали тя е вътре, вън или на някоя от страните. Кодът трябва да изглежда така:
-
-```csharp
-private void buttonDraw_Click(object sender, EventArgs e)
-{
- Draw();
-}
-
-private void FormPointAndRectangle_Load(object sender, EventArgs e)
-{
- Draw();
-}
-
-private void FormPointAndRectangle_Resize(object sender, EventArgs e)
-{
- Draw();
-}
-
-private void numericUpDownX1_ValueChanged(object sender, EventArgs e)
-{
- Draw();
-}
-
- /* TODO: implement in the same way event handlers
- numericUpDownY1_ValueChanged,
- numericUpDownX2_ValueChanged,
- numericUpDownY2_ValueChanged,
- numericUpDownX_ValueChanged and
- numericUpDownY_ValueChanged */
-
-private void Draw()
-{
- // TODO: implement this a bit later …
-}
-```
-
-Нека започнем от по-лесната част: **печат на информация къде е точката спрямо правоъгълника** (Inside, Outside или Border). Кодът трябва да изглежда така:
-
-```csharp
-private void Draw()
-{
- // Get the rectangle and point coordinates from the form
- var x1 = this.numericUpDownX1.Value;
- var y1 = this.numericUpDownY1.Value;
- var x2 = this.numericUpDownX2.Value;
- var y2 = this.numericUpDownY2.Value;
- var x = this.numericUpDownX.Value;
- var y = this.numericUpDownY.Value;
-
- // Display the location of the point: Inside / Border / Outside
- DisplayPointLocation(x1, y1, x2, y2, x, y);
-}
-
-private void DisplayPointLocation(
- decimal x1, decimal y1, decimal x2, decimal y2, decimal x, decimal y)
-{
- var left = Math.Min(x1, x2);
- var right = Math.Max(x1, x2);
- var top = Math.Min(y1, y2);
- var bottom = Math.Max(y1, y2);
- if (x > left && x < right && …)
- {
- this.labelLocation.Text = "Inside";
- this.labelLocation.BackColor = Color.LightGreen;
- }
- else if (… || y < top || y > bottom)
- {
- this.labelLocation.Text = "Outside";
- this.labelLocation.BackColor = Color.LightSalmon;
- }
- else
- {
- this.labelLocation.Text = "Border";
- this.labelLocation.BackColor = Color.Gold;
- }
-}
-```
-Горният код взима координатите на правоъгълника и точките и проверява дали точката е вътре, вън или на страната на правоъгълника. При визуализацията на резултата се сменя и цвета на фона на текстовия блок, който го съдържа.
-
-Помислете как **да допишете** недовършените (нарочно) условия в **`if` проверките**! Кодът по-горе **нарочно не се компилира**, защото целта му е да помислите как и защо работи и да **допишете сами липсващите части**.
-
-Остава да се имплементира най-сложната част: визуализация на правоъгълника и точката в контролата **`pictureBox`** с преоразмеряване. Може да си помогнем с **кода по-долу**, който прави малко изчисления и рисува син правоъгълник и тъмносиньо кръгче (точката) според зададените във формата координати. За съжаление сложността на кода надхвърля изучавания до момента материал и е сложно да се обясни в детайли как точно работи. Оставени са коментари за ориентация. Това е пълната версия на действието **`Draw()`**:
-
-```csharp
-private void Draw()
-{
- // Get the rectangle and point coordinates from the form
- var x1 = this.numericUpDownX1.Value;
- var y1 = this.numericUpDownY1.Value;
- var x2 = this.numericUpDownX2.Value;
- var y2 = this.numericUpDownY2.Value;
- var x = this.numericUpDownX.Value;
- var y = this.numericUpDownY.Value;
-
- // Display the location of the point: Inside / Border / Outside
- DisplayPointLocation(x1, y1, x2, y2, x, y);
-
- // Calculate the scale factor (ratio) for the diagram holding the
- // rectangle and point in order to fit them well in the picture box
- var minX = Min(x1, x2, x);
- var maxX = Max(x1, x2, x);
- var minY = Min(y1, y2, y);
- var maxY = Max(y1, y2, y);
- var diagramWidth = maxX - minX;
- var diagramHeight = maxY - minY;
- var ratio = 1.0m;
- var offset = 10;
- if (diagramWidth != 0 && diagramHeight != 0)
- {
- var ratioX = (pictureBox.Width - 2 * offset - 1) / diagramWidth;
- var ratioY = (pictureBox.Height - 2 * offset - 1) / diagramHeight;
- ratio = Math.Min(ratioX, ratioY);
- }
-
- // Calculate the scaled rectangle coordinates
- var rectLeft = offset + (int)Math.Round((Math.Min(x1, x2) - minX) * ratio);
- var rectTop = offset + (int)Math.Round((Math.Min(y1, y2) - minY) * ratio);
- var rectWidth = (int)Math.Round(Math.Abs(x2 - x1) * ratio);
- var rectHeight = (int)Math.Round(Math.Abs(y2 - y1) * ratio);
- var rect = new Rectangle(rectLeft, rectTop, rectWidth, rectHeight);
-
- // Calculate the scalled point coordinates
- var pointX = (int)Math.Round(offset + (x - minX) * ratio);
- var pointY = (int)Math.Round(offset + (y - minY) * ratio);
- var pointRect = new Rectangle(pointX - 2, pointY - 2, 5, 5);
-
- // Draw the rectangle and point
- pictureBox.Image = new Bitmap(pictureBox.Width, pictureBox.Height);
- using (var g = Graphics.FromImage(pictureBox.Image))
- {
- // Draw diagram background (white area)
- g.Clear(Color.White);
-
- // Draw the rectangle (scalled to the picture box size)
- var pen = new Pen(Color.Blue, 3);
- g.DrawRectangle(pen, rect);
-
- // Draw the point (scalled to the picture box size)
- pen = new Pen(Color.DarkBlue, 5);
- g.DrawEllipse(pen, pointRect);
- }
-}
-
-private decimal Min(decimal val1, decimal val2, decimal val3)
-{
- return Math.Min(val1, Math.Min(val2, val3));
-}
-
-private decimal Max(decimal val1, decimal val2, decimal val3)
-{
- return Math.Max(val1, Math.Max(val2, val3));
-}
-```
-
-В горния код се срещат доста **преобразувания на типове**, защото се работи с различни типове числа (десетични числа, реални числа и цели числа) и понякога се изисква да се преминава между тях.
-
-Накрая **компилираме кода**. Ако има грешки, ги отстраняваме. Най-вероятната **причина** за грешка е **несъответстващо име на някоя от контролите** или ако **сте написали кода на неправилно място**.
-
-**Стартираме приложението** и го **тестваме**. Въвеждаме различни данни, за да видим дали се държи коректно.
-
-Ако имате проблеми с примерния проект по-горе, **гледайте видеото** в началото на тази глава. Там приложението е направено на живо стъпка по стъпка с много обяснения. Или питайте във **форума на SoftUni**: https://softuni.bg/forum.
diff --git a/chapter-05-loops-exam-problems.md b/chapter-05-loops-exam-problems.md
deleted file mode 100644
index d6ff236c6..000000000
--- a/chapter-05-loops-exam-problems.md
+++ /dev/null
@@ -1,598 +0,0 @@
-# Глава 5.2. Повторения (цикли) – изпитни задачи
-
-В предходната глава научихме как да изпълним даден блок от команди **повече от веднъж**. Затова въведохме **`for` цикъл** и разгледахме някои от основните му приложения. Целта на настоящата глава е да затвърдим знанията си, решавайки няколко по-сложни задачи с цикли, давани на приемни изпити. За някои от тях ще покажем примерни подробни решения, а за други ще оставим само напътствия.
-Преди да се захванем за работа е добре да си припомним конструкцията на **цикъла `for`**:
-
-![](/assets/chapter-5-2-images/00.For-construction-01.png)
-
-**For циклите** се състоят от:
- * Инициализационен блок, в който се декларира променливата-брояч (**`var i`**) и се задава нейна начална стойност.
- * Условие за повторение (**`i <= 10`**), изпълняващо се веднъж, преди всяка итерация на цикъла.
- * Обновяване на брояча (**`i++`**) – този код се изпълнява след всяка итерация.
- * Тяло на цикъла - съдържа произволен блок със сорс код.
-
-
-## Изпитни задачи
-
-Да решим няколко задачи с цикли от изпити в SoftUni.
-
-
-## Задача: хистограма
-
-Дадени са **n цели числа** в интервала [**1 … 1000**]. От тях някакъв процент **p1** са под 200, процент __p2__ са от 200 до 399, процент **p3** са от 400 до 599, процент **p4** са от 600 до 799 и останалите **p5** процента са от 800 нагоре. Да се напише програма, която изчислява и отпечатва процентите **p1**, **p2**, **p3**, **p4** и **p5**.
-
-**Пример**: имаме n = **20** числа: 53, 7, 56, 180, 450, 920, 12, 7, 150, 250, 680, 2, 600, 200, 800, 799, 199, 46, 128, 65. Получаваме следното разпределение и визуализация:
-
-| **Група** | **Числа** | **Брой числа** | **Процент** |
-|-------------|-------------------------------------------------|:---------------|---------------------------------|
-| < 200 | 53, 7, 56, 180, 12, 7, 150, 2, 199, 46, 128, 65 | 12 | p1 = 12 / 20 * 100 = 60.00% |
-| 200 … 399 | 250, 200 | 2 | p2 = 2 / 20 * 100 = 10.00% |
-| 400 … 599 | 450 | 1 | p3 = 1 / 20 * 100 = 5.00% |
-| 600 … 799 | 680, 600, 799 | 3 | p4 = 3 / 20 * 100 = 15.00% |
-| ≥ 800 | 920, 800 | 2 | p5 = 2 / 20 * 100 = 10.00% |
-
-### Входни данни
-
-На първия ред от входа стои цялото число **n** (1 ≤ **n** ≤ 1000), което представлява броя редове с числа, които ще ни бъдат подадени. На следващите **n реда** стои **по едно цяло число** в интервала [**1 … 1000**] – числата, върху които да бъде изчислена хистограмата.
-
-### Изходни данни
-
-Да се отпечата на конзолата **хистограма от 5 реда**, всеки от които съдържа число между 0% и 100%, форматирано с точност две цифри след десетичния знак (например 25.00%, 66.67%, 57.14%).
-
-### Примерен вход и изход
-
-
-
-
-Вход |
-Изход |
-Вход |
-Изход |
-
-
-
-
-3 1 2 999 |
-66.67% 0.00% 0.00% 0.00% 33.33% |
-4 53 7 56 999 |
-75.00% 0.00% 0.00% 0.00% 25.00% |
-
-
-
-
-
-
-
-Вход |
-Изход |
-Вход |
-Изход |
-
-
-
-
-7 800 801 250 199 399 599 799 |
-14.29% 28.57% 14.29% 14.29% 28.57% |
-9 367 99 200 799 999 333 555 111 9 |
-33.33% 33.33% 11.11% 11.11% 11.11% |
-
-
-
-
-
-
-
-Вход |
-Изход |
-
-
-
-
-14 53 7 56 180 450 920 12 7 150 250 680 2 600 200 |
-57.14% 14.29% 7.14% 14.29% 7.14% |
-
-
-
-
-### Насоки и подсказки
-
-Програмата, която решава този проблем, можем да разделим мислено на три части:
-
- * **Прочитане на входните данни** – в настоящата задача това включва прочитането на числото **n**, последвано от **n на брой цели числа**, всяко на отделен ред.
- * **Обработка на входните данни** – в случая това означава разпределяне на числата по групи и изчисляване на процентното разделение по групи.
- * **Извеждане на краен резултат** – отпечатване на хистограмата на конзолата в посочения формат.
-
-Преди да продължим напред ще направим едно малко отклонение от настоящата тема, а именно ще споменем накратко, че в програмирането всяка променлива е от някакъв **тип данни**. В тази задача ще използваме числовите типове **`int`** за **цели числа** и **`double`** за **дробни**. Често, за улеснение, програмистите изпускат изричното уточняване на типа, като го заместват с ключовата дума **`var`**. С цел по-лесно разбиране ние ще изписваме типа при декларацията на променливите.
-
-Сега ще преминем към имплементацията на всяка от горепосочените точки.
-
-#### Прочитане на входните данни
-
-Преди да преминем към самото прочитане на входните данни трябва да си **декларираме променливите**, в които ще ги съхраняваме. Това означава да им изберем подходящ тип данни и подходящи имена.
-
-![](/assets/chapter-5-2-images/01.Histogram-01.png)
-
-В променливата **`n`** ще съхраняваме броя на числата, които ще четем от конзолата. Избираме **тип `int`**, защото в условието е упоменато, че **`n` e цяло число** в диапазона от 1 до 1000. За променливите, в които ще пазим процентите, избираме **тип `double`**, тъй като се очаква те **не винаги да са цели числа**. Допълнително си декларираме и променливите **`cntP1`**, **`cntP2`** и т.н., в които ще пазим броя на числата от съответната група, като за тях отново избираме **тип `int`**.
-
-След като сме си декларирали нужните променливи, можем да пристъпим към прочитането на числото **`n`** от конзолата:
-
-![](/assets/chapter-5-2-images/01.Histogram-02.png)
-
-#### Обработка на входните данни
-
-За да прочетем и разпределим всяко число в съответната му група, ще си послужим с **`for` цикъл** от **0** до **`n`** (броя на числата). Всяка итерация на цикъла ще прочита и разпределя **едно единствено** число (**`currentNumber`**) в съответната му група. За да определим дали едно число принадлежи към дадена група, **правим проверка в съответния ѝ диапазон**. Ако това е така - увеличаваме броя на числата в тази група (**`cntP1`**, **`cntP2`** и т.н.) с 1.
-
-![](/assets/chapter-5-2-images/01.Histogram-03.png)
-
-След като сме определили колко числа има във всяка група, можем да преминем към изчисляването на процентите, което е и главна цел на задачата. За това ще използваме следната формула:
-
-(процент на група) = (брой числа в група) * 100 / (брой на всички числа)
-
-Тази формула в програмния код изглежда по следния начин:
-
-![](/assets/chapter-5-2-images/01.Histogram-04.png)
-
-Ако разделим на **100** (число тип **`int`**) вместо на **100.0** (число тип **`double`**), ще се извърши така нареченото **целочислено деление** и в променливата ще се запази само цялата част от делението, а това не е желания от нас резултат. Например: **5 / 2 = 2**, а **5 / 2.0 = 2.5**. Имайки това предвид, формулата за първата променлива ще изглежда така:
-
-![](/assets/chapter-5-2-images/01.Histogram-05.png)
-
-За да стане още по-ясно какво се случва, нека разгледаме следния пример:
-
-|Вход|Изход|
-|--------|---------|
-|**3**
1
2
999|66.67%
0.00%
0.00%
0.00%
33.33%|
-
-В случая **`n = 3`**.
-За цикъла имаме:
- - **`i = 0`** - прочитаме числото 1, което е по-малко от 200 и попада в първата група (**`p1`**), увеличаваме брояча на групата (**`cntP1`**) с 1.
- - **`i = 1`** – прочитаме числото 2, което отново попада в първата група (**`p1`**) и увеличаваме брояча ѝ (**`cntP1`**) отново с 1.
- - **`i = 2`** – прочитаме числото 999, което попада в последната група (**`p5`**), защото е по-голямо от 800, и увеличаваме брояча на групата (**`cntP5`**) с 1.
-
-След прочитането на числата в група **`p1`** имаме 2 числа, а в **`p5`** имаме 1 число. В другите групи **нямаме числа**. Като приложим гореспоменатата формула, изчисляваме процентите на всяка група. Ако във формулата умножим по **100**, вместо по **100.0** ще получим за група **`p1`** 66%, а за група **`p5`** – 33% (няма да има дробна част).
-
-#### Извеждане на краен резултат
-
-Остава само да отпечатаме получените резултати. В условието е казано, че процентите трябва да са **с точност две цифри след десетичната точка**. Това ще постигнем, като след placeholder-а изпишем “**`:f2`**”:
-
-![](/assets/chapter-5-2-images/01.Histogram-06.png)
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/511#0](https://judge.softuni.bg/Contests/Practice/Index/511#0).
-
-
-## Задача: умната Лили
-
-Лили вече е на **N години**. За всеки свой **рожден ден** тя получава подарък. За **нечетните** рождени дни (1, 3, 5, …, n) получава **играчки**, а за всеки **четен** (2, 4, 6, …, n) получава **пари**. За **втория рожден ден** получава **10.00 лв.**, като **сумата се увеличава с 10.00 лв. за всеки следващ четен рожден ден** (2 -> 10, 4 -> 20, 6 -> 30 и т.н.). През годините Лили тайно е спестявала парите. **Братът** на Лили, в годините, които тя **получава пари**, **взима по 1.00 лев** от тях. Лили **продала играчките**, получени през годините, **всяка за P лева** и добавила сумата към спестените пари. С парите искала да си **купи пералня за X лева**. Напишете програма, която да пресмята **колко пари е събрала** и дали ѝ **стигат да си купи пералня**.
-
-### Входни данни
-
-От конзолата се прочитат **3 числа**, всяко на отделен ред:
-
- - **Възрастта** на Лили – **цяло число** в интервала [**1 … 77**].
- - **Цената на пералнята** – число в интервала [**1.00 … 10 000.00**].
- - **Единична цена на играчка** – **цяло число** в интервала [**0 … 40**].
-
-### Изходни данни
-
-Да се отпечата на конзолата един ред:
-
- * Ако парите на Лили са достатъчни:
- * “**Yes! {N}**” – където **N** е остатъка пари след покупката
- * Ако парите не са достатъчни:
- * “**No! {M}**” – където **M** е сумата, която не достига
- * Числата **N** и **M** трябва да са **форматирани до втория знак след десетичната точка**.
-
-### Примерен вход и изход
-
-
-
-
-Вход |
-Изход |
-Коментари |
-
-
-
-
-10 170.00 6 |
-Yes! 5.00 |
-Първи рожден ден получава играчка; 2ри -> 10 лв.; 3ти -> играчка; 4ти -> 10 + 10 = 20 лв.; 5ти -> играчка; 6ти -> 20 + 10 = 30 лв.; 7ми -> играчка; 8ми -> 30 + 10 = 40 лв.; 9ти -> играчка; 10ти -> 40 + 10 = 50 лв.
-Спестила е -> 10 + 20 + 30 + 40 + 50 = 150 лв.. Продала е 5 играчки по 6 лв. = 30 лв..
-Брат ѝ взел 5 пъти по 1 лев = 5 лв. Остават -> 150 + 30 – 5 = 175 лв.
-175 >= 170 (цената на пералнята) успяла е да я купи и са ѝ останали 175-170 = 5 лв.
- |
-
-
-21 1570.98 3 |
-No! 997.98 |
-Спестила е 550 лв.. Продала е 11 играчки по 3 лв. = 33 лв. Брат ѝ взимал 10 години по 1 лев = 10лв. Останали 550 + 33 – 10 = 573 лв.
-573 < 1570.98 – не е успяла да купи пералня. Не ѝ достигат 1570.98–573 = 997.98 лв. |
-
-
-
-
-### Насоки и подсказки
-
-Решението на тази задача, подобно на предходната, също можем да разделим мислено на три части – **прочитане** на входните данни, **обработката** им и **извеждане** на резултат.
-
-![](/assets/chapter-5-2-images/02.Smart-lilly-01.png)
-
-Отново започваме с избора на подходящи **типове данни** и имена на променливите. За годините на Лили (**`age`**) и единичната цена на играчката (**`presentPrice`**) по условие е дадено, че ще са **цели числа**. Затова ще използваме **типа `int`**. За цената на пералнята (**`priceOfWashingMachine`**) знаем, че е **дробно число и избираме `double`**. Разбира се, можем да пропуснем изричното уточняване на типа, като вместо това употребим **`var`**. В кода по-горе **декларираме** и **инициализираме** (присвояваме стойност) променливите.
-
-![](/assets/chapter-5-2-images/02.Smart-lilly-02.png)
-
-За да решим задачата, ще се нуждаем от няколко помощни променливи – за **броя на играчките** (**`numberOfToys`**), за **спестените пари** (**`savedMoney`**) и за **парите, получени на всеки рожден ден** (**`moneyForBirthday`**). Като присвояваме на **`moneyForBirthday`** първоначална стойност 10, тъй като по условие е дадено, че първата сума, която Лили получава, е 10 лв.
-
-![](/assets/chapter-5-2-images/02.Smart-lilly-03.png)
-
-С **`for` цикъл** преминаваме през всеки рожден ден на Лили. Когато водещата променлива е **четно число**, това означава, че Лили е **получила пари** и съответно прибавяме тези пари към общите ѝ спестявания. Едновременно с това **изваждаме по 1 лев** - парите, които брат ѝ взема. След това **увеличаваме** стойността на променливата **`moneyForBirthday`**, т.е. увеличаваме с 10 сумата, която тя ще получи на следващия си рожден ден. Обратно, когато водещата променлива е **нечетно число**, увеличаваме броя на **играчките**. Проверката за четност осъществяваме чрез **деление с остатък** (**`%`**) **на 2** – когато остатъкът е 0, числото е четно, а при остатък 1 - нечетно.
-
-Към спестяванията на Лили прибавяме и парите от продадените играчки:
-
-![](/assets/chapter-5-2-images/02.Smart-lilly-04.png)
-
-Накрая остава да отпечатаме получените резултати, като се съобразим с форматирането, указано в условието, т.е. сумата трябва да е **закръглена до две цифри след десетичния знак**:
-
-![](assets/chapter-5-2-images/02.Smart-lilly-05.png)
-
-В случая избрахме да използваме **условния оператор (`?:`)** (наричан още тернарен оператор), тъй като записът е по-кратък. Синтаксисът му е следният: **`операнд1 ? операнд2 : операнд3`**. Първият операнд трябва да е от **булев тип** (т.е. да връща **`true/false`**). Ако **`операнд1`** върне стойност **`true`**, то ще се изпълни **`операнд2`**, а ако върне **`false`** – **`операнд3`**. В нашия случай проверяваме дали **събраните пари** от Лили стигат за една пералня. Ако те са повече или равни на цената на пералнята, то проверката **`savedMoney >= priceOfWashingMachine`** ще върне **`true`** и ще се отпечата „**Yes! …**“, а ако е по-малко – резултатът ще е **`false`** и ще се отпечата “**No! …**”. Разбира се, вместо условния оператор, можем да използваме и **`if`** проверки.
-
-Повече за условния оператор: [https://www.dotnetperls.com/ternary](https://www.dotnetperls.com/ternary), [https://msdn.microsoft.com/en-us/library/ty67wk28.aspx](https://msdn.microsoft.com/en-us/library/ty67wk28.aspx).
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/511#1](https://judge.softuni.bg/Contests/Practice/Index/511#1).
-
-
-## Задача: завръщане в миналото
-
-Иванчо е на **18 години** и получава наследство, което се състои от **X сума пари** и **машина на времето**. Той решава **да се върне до 1800 година**, но не знае **дали парите** ще **са достатъчни**, за да живее без да работи. Напишете **програма, която пресмята** дали Иванчо **ще има достатъчно пари**, за да не се налага да работи **до дадена година включително**. Като приемем, че **за всяка четна** (1800, 1802 и т.н.) година ще **харчи 12 000 долара**. За **всяка нечетна** (1801,1803 и т.н.) ще харчи **12 000 + 50 * [годините, които е навършил през дадената година]**.
-
-### Входни данни
-
-Входът се чете от конзолата и **съдържа точно 2 реда**:
- * **Наследените пари** – реално число в интервала [**1.00 … 1 000 000.00**].
- * **Годината, до която трябва да живее (включително)** – цяло число в интервала [**1801 … 1900**].
-
-### Изходни данни
-
-Да се **отпечата** на конзолата **1 ред**. **Сумата** трябва да е **форматирана** до **два знака след десетичния знак**:
- * Ако **парите са достатъчно**:
- * „**Yes! He will live a carefree life and will have {N} dollars left.**“ – където **N** са парите, които ще му останат.
- * Ако **парите НЕ са достатъчно**:
- * „**He will need {М} dollars to survive.**“ – където **M** е сумата, която **НЕ достига**.
-
-### Примерен вход и изход
-
-
-
-
-Вход |
-Изход |
-Обяснения |
-
-
-
-
-50000 1802 |
-Yes! He will live a carefree life and will have 13050.00 dollars left. |
-1800 → четна
- → Харчи 12000 долара
- → Остават 50000 – 12000 = 38000
-1801 → нечетна
- → Харчи 12000 + 19*50 = 12950 долара
- → Остават 38000 – 12950 = 25050
-1802 → четна
- → Харчи 12000 долара
- → Остават 25050 – 12000 = 13050 |
-
-
-100000.15 1808 |
-He will need 12399.85 dollars to survive. |
-1800 → четна
- → Остават 100000.15 – 12000 = 88000.15
-1801 → нечетна
- → Остават 88000.15 – 12950 = 75050.15
-…
-1808 → четна → -399.85 - 12000 = -12399.85
-12399.85 не достигат
- |
-
-
-
-
-### Насоки и подсказки
-
-Методът за решаване на тази задача не е по-различен от тези на предходните, затова започваме **деклариране и инициализиране** на нужните променливи:
-
-![](/assets/chapter-5-2-images/03.Back-to-the-past-01.png)
-
-В условието е казано, че годините на Иванчо са 18, ето защо при декларацията на променливата **`years`** ѝ задаваме начална стойност **18**. Другите променливи прочитаме от конзолата.
-
-![](/assets/chapter-5-2-images/03.Back-to-the-past-02.png)
-
-С помощта на **`for` цикъл** ще обходим всички години. **Започваме от 1800** – годината, в която Иванчо се връща, и стигаме **до годината, до която той трябва да живее**. В цикъла проверяваме дали текущата година е **четна** или **нечетна**. Проверката за четност осъществяваме чрез **деление с остатък** (**`%`**) на 2. Ако годината е **четна**, изваждаме от наследството (**`heritage`**) **12000**, a ако е **нечетна**, изваждаме от наследството (**`heritage`**) **12000 + 50 * (годините на Иванчо)**.
-
-Накрая остава да отпечатаме резултатите, като за целта правим **проверка дали наследството** (**`heritage`**) му е било достатъчно да живее без да работи или не. Ако наследството (**`heritage`**) е **положително число**, отпечатваме: „**`Yes! He will live a carefree life and will have {N} dollars left.`**“, а ако е **отрицателно число**: „**`He will need {М} dollars to survive.`**“. Не забравяме да форматираме сумата до два знака след десетичната точка.
-
-**Hint**: Обмислете използването на функцията **`Math.Abs(…)`** при отпечатване на изхода, когато наследството е недостатъчно.
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/511#2](https://judge.softuni.bg/Contests/Practice/Index/511#2).
-
-
-## Задача: болница
-
-За даден период от време, всеки ден в болницата пристигат пациенти за преглед. Тя разполага **първоначално** със **7 лекари**. Всеки лекар може да преглежда **само по един пациент на ден**, но понякога има недостиг на лекари, затова **останалите пациенти се изпращат в други болници**. **Всеки трети ден** болницата прави изчисления и **ако броят на непрегледаните пациенти е по-голям от броя на прегледаните, се назначава още един лекар**. Като назначаването става преди да започне приемът на пациенти за деня.
-
-Напишете програма, която изчислява **за дадения период броя на прегледаните и непрегледаните пациенти**.
-
-### Входни данни
-
-Входът се чете от **конзолата** и съдържа:
- * На първия ред – **периода**, за който трябва да направите изчисления. **Цяло число** в интервала [**1 … 1000**].
- * На следващите редове (равни на броя на дните) – **броя пациенти**, които пристигат за преглед за **текущия ден**. Цяло число в интервала [**0 … 10 000**].
-
-### Изходни данни
-
-Да се **отпечатат** на конзолата **2 реда**:
-
-* На **първия ред**: “**Treated patients: {брой прегледани пациенти}.**”
-* На **втория ред**: “**Untreated patients: {брой непрегледани пациенти}.**”
-
-### Примерен вход и изход
-
-
-
-
-Вход |
-Изход |
-Обяснения |
-
-
-
-
-4 7 27 9 1 |
-Treated patients: 23. Untreated patients: 21. |
-1 ден: 7 прегледани и 0 непрегледани пациента за деня
-2 ден: 7 прегледани и 20 непрегледани пациента за деня
-3 ден: До момента прегледаните пациенти са общо 14, а непрегледаните – 20 –> Назначава се нов лекар –>
-8 прегледани и 1 непрегледан пациент за деня
-4 ден: 1 прегледан и 0 непрегледани пациента за деня
-Общо: 23 прегледани и 21 непрегледани пациенти. |
-
-
-
-
-
-
-
-Вход |
-Изход |
-
-
-
-
-6 25 25 25 25 25 2 |
-Treated patients: 40. Untreated patients: 87. |
-
-
-3 7 7 7 |
-Treated patients: 21. Untreated patients: 0. |
-
-
-
-
-### Насоки и подсказки
-Отново започваме, като си **декларираме и инициализираме** нужните променливи:
-
-![](/assets/chapter-5-2-images/04.Hospital-01.png)
-
-Периодът, за който трябва да направим изчисленията, прочитаме от конзолата и запазваме в променливата **`period`**. Ще се нуждаем и от няколко помощни променливи: броя на излекуваните пациенти (**`treatedPatients`**), броя на неизлекуваните пациенти (**`untreatedPatients`**) и броя на докторите (**`countOfDoctors`**), който първоначално е 7.
-
-![](//assets/chapter-5-2-images/04.Hospital-02.png)
-
-С помощта на **`for` цикъл** обхождаме всички дни в дадения период (**`period`**). За всеки ден прочитаме от конзолата броя на пациентите (**`currentPatients`**). Увеличаването на докторите по условие може да стане **всеки трети ден**, **НО** само ако броят на непрегледаните пациенти е **по-голям** от броя на прегледаните. За тази цел проверяваме дали денят е трети – чрез аритметичния оператор за деление с остатък (**`%`**): **`day % 3 == 0`**.
-
-Например:
- * Ако денят е **трети**, остатъкът от делението на **3** ще бъде **0** (**`3 % 3 = 0`**) и проверката **`day % 3 == 0`** ще върне **`true`**.
- * Ако денят е **втори**, остатъкът от делението на **3** ще бъде **2** (**`2 % 3 = 2`**) и проверката ще върне **`false`**.
- * Ако денят е **четвърти**, остатъкът от делението ще бъде **1** (**`4 % 3 = 1`**) и проверката отново ще върне **`false`**.
-
-Ако проверката **`day % 3 == 0`** върне **`true`**, ще се провери дали и броят на неизлекуваните пациенти е по-голям от този на излекуваните: **`untreatedPatients > treatedPatients`**. Ако резултатът отново е **`true`**, тогава ще се увеличи броят на лекарите (**`countOfDoctors`**).
-
-След това проверяваме броя на пациентите за деня (**`currentPatients`**) дали е по-голям от броя на докторите (**`countOfDoctors`**). Ако броят на пациентите е **по-голям**:
- - Увеличаваме стойността на променливата **`treatedPatients`** с броя на докторите (**`countOfDoctors`**).
- - Увеличаваме стойността на променливата **`untreatdPatients`** с броя на останалите пациенти, който изчисляваме, като от всички пациенти извадим броя на докторите (**`currentPatients - countOfDoctors`**).
-
-Ако броят на пациентите **не е по-голям**, увеличаваме само променливата **`treatedPatients`** с броя на пациентите за деня (**`currentPatients`**).
-
-Накрая трябва само да отпечатаме броя на излекуваните и броя на неизлекуваните пациенти.
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/511#3](https://judge.softuni.bg/Contests/Practice/Index/511#3).
-
-
-## Задача: деление без остатък
-
-Дадени са **n цели числа** в интервала [**1 … 1000**]. От тях някакъв **процент p1 се делят без остатък на 2**, **процент p2** се **делят без остатък на 3**, **процент p3** се **делят без остатък на 4**. Да се напише програма, която изчислява и отпечатва процентите p1, p2 и p3.
-**Пример:** имаме **n = 10** числа: 680, 2, 600, 200, 800, 799, 199, 46, 128, 65. Получаваме следното разпределение и визуализация:
-
-
-
-Деление без остатък на: |
-Числа |
-Брой |
-Процент |
-
-
-
-
-2 |
-680, 2, 600, 200, 800, 46, 128 |
-7 |
-p1 = (7 / 10) * 100 = 70.00% |
-
-
-3 |
-600 |
-1 |
-p2 = (1 / 10) * 100 = 10.00% |
-
-
-4 |
-680, 600, 200, 800, 128 |
-5 |
-p3 = (5 / 10) * 100 = 50.00% |
-
-
-
-
-### Входни данни
-
-На първия ред от входа стои цялото число **n** (1 ≤ **n** ≤ 1000) – брой числа. На следващите **n реда** стои **по едно цяло число** в интервала [**1 … 1000**] – числата, които да бъдат проверени на колко се делят.
-
-### Изходни данни
-
-Да се отпечатат на конзолата **3 реда**, всеки от които съдържа процент между 0% и 100%, с точност две цифри след десетичния знак, например 25.00%, 66.67%, 57.14%.
- * На **първия ред** – процентът на числата, които **се делят на 2**.
- * На **втория ред** – процентът на числата, които **се делят на 3**.
- * На **третия ред** – процентът на числата, които **се делят на 4**.
-
-### Примерен вход и изход
-
-
-
-
-Вход |
-Изход |
-Вход |
-Изход |
-Вход |
-Изход |
-
-
-
-
-10 680 2 600 200 800 799 199 46 128 65 |
-70.00% 10.00% 50.00% |
-3 3 6 9 |
-33.33% 100.00% 0.00% |
-1 12 |
-100.00% 100.00% 100.00% |
-
-
-
-
-### Насоки и подсказки
-
-За тази и следващата задача ще трябва сами да напишете програмния код, следвайки дадените напътствия.
-
-Програмата, която решава текущия проблем, е аналогична на тази от задача **Хистограма**, която разгледахме по-горе. Затова можем да започнем с декларацията на нужните ни променливи:
-Примерни имена на променливи може да са: **`n`** – брой на числата (който трябва да прочетем от конзолата) и **`divisibleBy2`**, **`divisibleBy3`**, **`divisibleBy4`** – помощни променливи, пазещи броя на числата от съответната група.
-
-За да прочетем и разпределим всяко число в съответната му група, ще трябва да завъртим **`for` цикъл** от **`0`** до **`n`** (броя на числата). Всяка итерация на цикъла трябва да прочита и разпределя **едно единствено число**. Различното тук е, че **едно число може да попадне в няколко групи едновременно**, затова трябва да направим **три отделни `if` проверки за всяко число** – съответно дали се дели на 2, 3 и 4 (**`if-else`** конструкция в този случай няма да ни свърши работа, защото след като намери съвпадение се прекъсва по-нататъшното проверяване на условията) и да увеличим стойността на променливата, която пази броя на числата в съответната група.
-
-Накрая трябва да отпечатате получените резултати, като спазвате посочения формат в условието.
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/511#4](https://judge.softuni.bg/Contests/Practice/Index/511#4).
-
-
-## Задача: логистика
-
-Отговаряте за логистиката на различни товари. **В зависимост от теглото** на всеки товар е нужно **различно превозно средство** и струва **различна цена на тон**:
-
- * До **3 тона** – **микробус** (200 лева на тон).
- * От **над 3 и до 11 тона** – **камион** (175 лева на тон).
- * **Над 11 тона – влак** (120 лева на тон).
-
-Вашата задача е да изчислите **средната цена на тон превозен товар**, както и **колко процента от товара** се превозват с **всяко превозно средство**.
-
-### Входни данни
-
-От конзолата се четат **поредица от числа**, всяко на отделен ред:
- * **Първи ред**: **брой на товарите** за превоз – **цяло число** в интервала [**1 … 1000**].
- * На всеки следващ ред се подава **тонажът на поредния товар** – **цяло число** в интервала [**1 … 1000**].
-
-### Изходни данни
-
-Да се отпечатат на конзолата **4 реда**, както следва:
- * **Ред #1** – **средната цена на тон превозен товар** (закръглена до втория знак след десетичната точка).
- * **Ред #2** – **процентът** товар, превозван с **микробус** (между 0.00% и 100.00%, закръглен до втория знак след десетичната точка).
- * **Ред #3** – **процентът** товар, превозвани с **камион** (между 0.00% и 100.00%).
- * **Ред #4** – **процентът** товар, превозвани с **влак** (между 0.00% и 100.00%).
-
-### Примерен вход и изход
-
-
-
-
-Вход |
-Изход |
-Обяснения |
-
-
-
-
-4 1 5 16 3 |
-143.80 16.00% 20.00% 64.00% |
-
-С микробус се превозват два от товарите 1 + 3, общо 4 тона.
-С камион се превозва един от товарите: 5 тона.
-С влак се превозва един от товарите: 16 тона.
-Сумата от всички товари е: 1 + 5 + 16 + 3 = 25 тона.
-Процент товар с микробус: 4/25*100 = 16.00%
-Процент товар с камион: 5/25*100 = 20.00%
-Процент товар с влак: 16/25*100 = 64.00%
-Средна цена на тон превозен товар: (4 * 200 + 5 * 175 + 16 * 120) / 25 = 143.80
- |
-
-
-
-
-
-
-
-Вход |
-Изход |
-Вход |
-Изход |
-
-
-
-
-5 2 10 20 1 7 |
-149.38 7.50% 42.50% 50.00% |
-4 53 7 56 999 |
-120.35 0.00% 0.63% 99.37% |
-
-
-
-
-### Насоки и подсказки
-
-Първо **ще прочетем теглото на всеки товар** и ще **сумираме** колко тона се превозват съответно с **микробус**, **камион** и **влак** и ще изчислим и **общите тонове** превозени товари. Ще пресметнем **цените за всеки вид транспорт** според превозените тонове и **общата цена**. Накрая ще пресметнем и отпечатаме **общата средна цена на тон** и **каква част от товара е превозена с всеки вид транспорт процентно**.
-
-Декларираме си нужните променливи, например: **`countOfLoads`** – броя на товарите за превоз (прочитаме ги от конзолата), **`sumOfTons`** – сумата от тонажа на всички товари, **`microbusTons`**, **`truckTons`**, **`trainTons`** – променливи, пазещи сумата от тонажа на товарите, превозвани съответно с микробус, камион и влак.
-
-Ще ни трябва **`for` цикъл** от **`0`** до **`countOfLoads-1`**, за да обходим всички товари. За всеки товар **прочитаме теглото му** (в тонове) от конзолата и го запазваме в променлива, например **`tons`**. Прибавяме към сумата от тонажа на всички товари (**`sumOfTons`**) теглото на текущия товар (**`tons`**). След като сме прочели теглото на текущия товар, **трябва да определим кое превозно средство ще се ползва за него** (микробус, камион или влак). За целта ще ни трябват **`if-else`** проверки:
-
- * Ако стойността на променливата **`tons`** е **по-малка от 3**, увеличаваме стойността на променливата **`microbusTons`** със стойността на **`tons`**:
-
- ```csharp
- microbusTons += tons;
- ```
-
- * Иначе, ако стойността **`tons`** е **до 11**, увеличаваме **`truckTons`** с **`tons`**.
- * Ако **`tons`** e **повече от 11**, увеличаваме **`trainTons`** с **`tons`**.
-
-Преди да отпечатаме изхода трябва да **изчислим процента на тоновете, превозвани с всяко превозно средство** и **средната цена на тон**. За средната цена на тон ще си декларираме още една помощна променлива **`totalPrice`**, в която ще **сумираме общата цена на всички превозвани товари** (с микробус, камион и влак). Средната цена ще получим, разделяйки **`totalPrice`** на **`sumOfTons`**. Остава **сами да изчислите** процента на тоновете, превозвани с всяко превозно средство, и да отпечатате резултатите, спазвайки формата в условието.
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/511#5](https://judge.softuni.bg/Contests/Practice/Index/511#5).
diff --git a/chapter-05-loops.md b/chapter-05-loops.md
deleted file mode 100644
index d0eb34ff2..000000000
--- a/chapter-05-loops.md
+++ /dev/null
@@ -1,457 +0,0 @@
-# Глава 5.1. Повторения (цикли)
-
-В настоящата глава ще се запознаем с конструкциите за **повторение на група команди**, известни в програмирането с понятието "**цикли**". Ще напишем няколко цикъла с използване на оператора **`for`** в най-простата му форма. Накрая ще решим няколко практически задачи, изискващи повторение на поредица от действия, като използваме цикли.
-
-## Видео
-
-
-
-
-## Повторения на блокове код (for цикъл)
-
-В програмирането често пъти се налага **да изпълним блок с команди няколко пъти**. За целта се използват т.нар. **цикли**. Нека разгледаме един пример за **`for` цикъл**, който преминава последователно през числата от 1 до 10 и ги отпечатва:
-
-![](/assets/chapter-5-images/00.For-loop-01.png)
-
-Цикълът започва с **оператора `for`** и преминава през всички стойности за дадена променлива в даден интервал, например всички числа от 1 до 10 включително, и за всяка стойност изпълнява поредица от команди.
-
-В декларацията на цикъла може да се зададе **начална стойност** и **крайна стойност**. **Тялото на цикъла** обикновено се огражда с къдрави скоби **`{ }`** и представлява блок с една или няколко команди. На фигурата по-долу е показана структурата на един **`for` цикъл**:
-
-![](/assets/chapter-5-images/00.For-loop-02.png)
-
-В повечето случаи един **`for` цикъл** се завърта от **`1`** до **`n`** (например от 1 до 10). Целта на цикъла е да се премине последователно през числата 1, 2, 3, …, n и за всяко от тях да се изпълни някакво действие. В примера по-горе променливата **`i`** приема стойности от 1 до 10 и в тялото на цикъла се отпечатва текущата стойност. Цикълът се повтаря 10 пъти и всяко от тези повторения се нарича "**итерация**".
-
-### Пример: числа от 1 до 100
-
-Да се напише програма, която **печата числата от 1 до 100**. Програмата не приема вход и отпечатва числата от 1 до 100 едно след друго, по едно на ред.
-
-#### Насоки и подсказки
-
-Можем да решим задачата с **`for` цикъл** , с който преминаваме с променливата **`i`** през числата от 1 до 100 и ги печатаме в тялото на цикъла:
-
-![](/assets/chapter-5-images/01.Numbers-1-to-100-01.png)
-
-**Стартираме** програмата с [**Ctrl+F5**] и я **тестваме**:
-
-![](/assets/chapter-5-images/01.Numbers-1-to-100-02.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/510#0](https://judge.softuni.bg/Contests/Practice/Index/510#0).
-
-Трябва да получите **100 точки** (напълно коректно решение).
-
-
-## Code Snippet за for цикъл във Visual Studio
-
-Докато програмираме, постоянно се налага да пишем цикли, десетки пъти всеки ден. Затова в повечето среди за разработка (IDE) има **шаблони за код** (**code snippets**) за писане на цикли. Един такъв шаблон е **шаблонът за `for` цикъл във Visual Studio**. Напишете **`for`** в редактора за C# код във Visual Studio и **натиснете два пъти** [**Tab**]. Visual Studio ще разгъне за вас шаблон и ще напише цялостен **`for` цикъл**:
-
-![](/assets/chapter-5-images/00.For-loop-code-snippet-01.png)
-
-**Опитайте сами**, за да усвоите умението да ползвате шаблона за код за **`for` цикъл** във Visual Studio.
-
-### Пример: числа до 1000, завършващи на 7
-
-Да се напише програма, която намира всички числа в интервала [**1 … 1000**], които завършват на 7.
-
-#### Насоки и подсказки
-
-Задачата можем да решим като комбинираме **`for` цикъл** за преминаваме през числата от 1 до 1000 и **проверка** за всяко число дали завършва на 7. Има и други решения, разбира се, но нека решим задачата чрез **завъртане на цикъл + проверка**:
-
-![](/assets/chapter-5-images/02.Numbers-ending-in-7-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/510#1](https://judge.softuni.bg/Contests/Practice/Index/510#1).
-
-
-### Пример: всички латински букви
-
-Да се напише програма, която отпечатва буквите от латинската азбука: **a, b, c, …, z**.
-
-#### Насоки и подсказки
-
-Полезно е да се знае, че **`for` циклите** не работят само с числа. Може да решим задачата като завъртим **`for` цикъл**, който преминава последователно през всички букви от латинската азбука:
-
-![](/assets/chapter-5-images/03.Latin-letters-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/510#2](https://judge.softuni.bg/Contests/Practice/Index/510#2).
-
-
-### Пример: сумиране на числа
-
-Да се напише програма, която **въвежда `n` цели числа и ги сумира**.
-
-* От първия ред на входа се въвежда броят числа **`n`**.
-* От следващите **`n`** реда се въвежда по едно число.
-* Числата се сумират и накрая се отпечатва резултатът.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-| --- | --- |
-| 2
10
20 | 30 |
-| 3
-10
-20
-30 | -60 |
-| 4
45
-20
7
11
| 43 |
-| 1
999 | 999 |
-| 0 | 0 |
-
-#### Насоки и подсказки
-
-Можем да решим задачата за сумиране на числа по следния начин:
- - Четем входното число **`n`**.
- - Започваме първоначално със сума **`sum = 0`**.
- - Въртим цикъл от 1 до **`n`**. На всяка стъпка от цикъла четем число **`num`** и го добавяме към сумата **`sum`**.
- - Накрая отпечатваме получената сума **`sum`**.
-
-Ето и сорс кода на решението:
-
-![](/assets/chapter-5-images/04.Sum-numbers-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/510#3](https://judge.softuni.bg/Contests/Practice/Index/510#3).
-
-
-### Пример: най-голямо число
-
-Да се напише програма, която въвежда **n цели числа** (**n** > 0) и намира **най-голямото** измежду тях. На първия ред на входа се въвежда броят числа **n**. След това се въвеждат самите числа, по едно на ред. Примери:
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-| --- | --- |
-| 2
100
99 | 100 |
-| 3
-10
20
-30 | 20 |
-| 4
45
-20
7
99
| 99 |
-| 1
999 | 999 |
-| 2
-1
-2 | -1 |
-
-#### Насоки и подсказки
-
-Първо въвеждаме едно число **`n`** (броят числа, които предстои да бъдат въведени). Задаваме на текущия максимум **`max`** първоначална неутрална стойност, например **-10000000000000** (или **`int.MinValue`**). С помощта на **`for` цикъл**, чрез който итерираме **n-1 пъти**, прочитаме по едно цяло число **`num`**. Ако прочетеното число **`num`** е по-голямо от текущия максимум **`max`**, присвояваме стойността на **`num`** в променливата **`max`**. Накрая, в **`max`** трябва да се е запазило най-голямото число. Отпечатваме го на конзолата.
-
-![](/assets/chapter-5-images/05.Max-number-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/510#4](https://judge.softuni.bg/Contests/Practice/Index/510#4).
-
-
-### Пример: най-малко число
-
-Да се напише програма, която въвежда **n цели числа** (**n** > 0) и намира **най-малкото** измежду тях. Първо се въвежда броя числа **n**, след тях още **n** числа по едно на ред.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-| --- | --- |
-| 2
100
99 | 99 |
-| 3
-10
20
-30 | -30 |
-| 4
45
-20
7
99
| -20 |
-
-#### Насоки и подсказки
-
-Задачата е абсолютно аналогична с предходната, само че започване с друга неутрална начална стойност.
-
-![](/assets/chapter-5-images/06.Min-number-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/510#5](https://judge.softuni.bg/Contests/Practice/Index/510#5).
-
-
-### Пример: лява и дясна сума
-
-Да се напише програма, която въвежда **2 \* n цели числа** и проверява дали **сумата на първите n числа** (лява сума) е равна на **сумата на вторите n числа** (дясна сума). При равенство се печата **"Yes" + сумата**, иначе се печата **"No" + разликата**. Разликата се изчислява като положително число (по абсолютна стойност). Форматът на изхода трябва да е като в примерите по-долу.
-
-#### Примерен вход и изход
-
-| Вход | Изход | Вход | Изход |
-| --- | --- | --- | --- |
-| 2
10
90
60
40 | Yes, sum = 100 | 2
90
9
50
50 | No, diff = 1 |
-
-#### Насоки и подсказки
-
-Първо въвеждаме числото **n**, след това първите **n** числа (**лявата** половина) и ги сумираме. Продължаваме с въвеждането на още **n** числа (**дясната** половина) и намираме и тяхната сума. Изчисляваме **разликата** между намерените суми по абсолютна стойност: **`Math.Abs(leftSum - rightSum)`**. Ако разликата е **0**, отпечатваме **"Yes" + сумата**, в противен случай - отпечатваме **"No" + разликата**.
-
-![](/assets/chapter-5-images/07.Left-and-right-sum-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/510#6](https://judge.softuni.bg/Contests/Practice/Index/510#6).
-
-
-### Пример: четна / нечетна сума
-
-Да се напише програма, която въвежда **n цели числа** и проверява дали **сумата на числата на четни позиции** е равна на **сумата на числата на нечетни позиции**. При равенство печата **"Yes" + сумата**, иначе печата **"No" + разликата**. Разликата се изчислява по абсолютна стойност. Форматът на изхода трябва да е като в примерите по-долу.
-
-#### Примерен вход и изход
-
-| Вход | Изход |
-| --- | --- |
-| 4
10
50
60
20 | Yes
Sum = 70 |
-| 4
3
5
1
-2 | No
Diff = 1 |
-| 3
5
8
1 | No
Diff = 2 |
-
-#### Насоки и подсказки
-
-Въвеждаме числата едно по едно и изчисляваме двете **суми** (на числата на **четни** позиции и на числата на **нечетни** позиции). Както в предходната задача, изчисляваме абсолютната стойност на разликата и отпечатваме резултата (**"Yes" + сумата** при разлика 0 или **"No" + разликата** в противен случай).
-
-![](assets/chapter-5-images/08.Odd-even-sum-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/510#7](https://judge.softuni.bg/Contests/Practice/Index/510#7).
-
-
-### Пример: сумиране на гласните букви
-
-Да се напише програма, която въвежда **текст** (стринг), изчислява и отпечатва **сумата от стойностите на гласните букви** според таблицата по-долу:
-
-| a | e | i | o | u |
-| :---: | :---: | :---: | :---: | :---: |
-| 1 | 2 | 3 | 4 | 5 |
-
-#### Примерен вход и изход
-
-| Вход | Изход | Вход | Изход |
-| --- | --- | --- | --- |
-| hello | 6
(e+o = 2+4 = 6) | bamboo | 9
(a+o+o = 1+4+4 = 9) |
-| hi | 3
(i = 3) | beer | 4
(e+e = 2+2 = 4) |
-
-#### Насоки и подсказки
-
-Прочитаме входния текст **`s`**, зануляваме сумата и завъртаме цикъл от **0** до **`s.Length-1`** (дължината на текста -1). Проверяваме всяка буква **`s[i]`** дали е гласна и съответно добавяме към сумата стойността ѝ.
-
-![](/assets/chapter-5-images/09.Vowels-sum-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/510#8](https://judge.softuni.bg/Contests/Practice/Index/510#8).
-
-
-## Какво научихме от тази глава?
-
-Можем да повтаряме блок код с **`for` цикъл**:
-
-![](/assets/chapter-5-images/00.For-loop-01.png)
-
-Можем да четем поредица от **`n`** числа от конзолата:
-
-![](/assets/chapter-5-images/00.For-loop-03.png)
-
-## Упражнения: повторения (цикли)
-
-След като се запознахме с циклите, идва време **да затвърдим знанията си на практика**, а както знаете, това става с много писане на код. Да решим няколко задачи за упражнение.
-
-### Празно Visual Studio решение (Blank Solution)
-
-Създаваме празно решение **(Blank Solution)** във Visual Studio, за да организираме по-добре задачите за упражнение. Целта на този **blank solution** e да съдържа **по един проект за всяка задача** от упражненията.
-
-![](/assets/chapter-5-images/00.Blank-visual-studio-01.png)
-
-Задаваме **да се стартира по подразбиране текущият проект** (не първият в решението). Кликваме с десен бутон на мишката върху **Solution 'Loops'** -> [**Set StartUp Projects…**] -> [**Current selection**].
-
-### Задача: елемент, равен на сумата на останалите
-
-Да се напише програма, която въвежда **n цели числа** и проверява дали сред тях съществува число, което е равно на сумата на всички останали. Ако има такъв елемент, се отпечатва **"Yes" + неговата стойност**, в противен случай - **"No" + разликата между най-големия елемент и сумата на останалите** (по абсолютна стойност).
-
-#### Примерен вход и изход
-
-| Вход | Изход | Коментар |
-| --- | --- | :---: |
-| 7
3
4
1
1
2
12
1 | Yes
Sum = 12 | 3 + 4 + 1 + 2 + 1 + 1 = 12 |
-| 4
6
1
2
3 | Yes
Sum = 6 | 1 + 2 + 3 = 6 |
-| 3
1
1
10 | No
Diff = 8 | |10 - (1 + 1)| = 8 |
-| 3
5
5
1 | No
Diff = 1 | |5 - (5 + 1)| = 1 |
-| 3
1
1
1 | No
Diff = 1 | - |
-
-#### Насоки и подсказки
-
-Трябва да изчислим **сумата** на всички елементи, да намерим **най-големия** от тях и да проверим търсеното условие.
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/510#9](https://judge.softuni.bg/Contests/Practice/Index/510#9).
-
-
-### Задача: четни / нечетни позиции
-
-Напишете програма, която чете **n числа** и пресмята **сумата**, **минимума** и **максимума** на числата на **четни** и **нечетни** позиции (броим от 1). Когато няма минимален / максимален елемент, отпечатайте **"No"**.
-
-#### Примерен вход и изход
-
-| Вход | Изход | Вход | Изход |
-| --- | --- | --- | --- |
-| 6
2
3
5
4
2
1 | OddSum=9,
OddMin=2,
OddMax=5,
EvenSum=8,
EvenMin=1,
EvenMax=4 | 2
1.5
-2.5 | OddSum=1.5,
OddMin=1.5,
OddMax=1.5,
EvenSum=-2.5,
EvenMin=-2.5,
EvenMax=-2.5 |
-| 1
1 | OddSum=1,
OddMin=1,
OddMax=1,
EvenSum=0,
EvenMin=No,
EvenMax=No | 0 | OddSum=0,
OddMin=No,
OddMax=No,
EvenSum=0,
EvenMin=No,
EvenMax=No |
-| 5
3
-2
8
11
-3 | OddSum=8,
OddMin=-3,
OddMax=8,
EvenSum=9,
EvenMin=-2,
EvenMax=11 | 4
1.5
1.75
1.5
1.75 | OddSum=3,
OddMin=1.5,
OddMax=1.5,
EvenSum=3.5,
EvenMin=1.75,
EvenMax=1.75 |
-| 1
-5 | OddSum=-5,
OddMin=-5,
OddMax=-5,
EvenSum=0,
EvenMin=No,
EvenMax=No | 3
-1
-2
-3 | OddSum=-4,
OddMin=-3,
OddMax=-1,
EvenSum=-2,
EvenMin=-2,
EvenMax=-2 |
-
-#### Насоки и подсказки
-
-Задачата обединява няколко предходни задачи: намиране на **минимум**, **максимум** и **сума**, както и обработка на елементите от **четни и нечетни позиции**. Припомнете си ги.
-
-В тази задача е по-добре да се работи с **дробни числа** (не цели). Сумата, минимумът и максимумът също са дробни числа. Трябва да използваме **неутрална начална стойност** при намиране на минимум / максимум, например **1000000000.0** и **-1000000000.0**. Ако получим накрая неутралната стойност, печатаме **“No”**.
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/510#10](https://judge.softuni.bg/Contests/Practice/Index/510#10).
-
-
-### Задача: еднакви двойки
-
-Дадени са **2 \* n числа**. Първото и второто формират **двойка**, третото и четвъртото също и т.н. Всяка двойка има **стойност** – сумата от съставящите я числа. Напишете програма, която проверява **дали всички двойки имат еднаква стойност**.
-
-В случай, че е еднаква отпечатайте **"Yes, value=…" + стойността**, в противен случай отпечатайте **максималната разлика** между две последователни двойки в следния формат - **"No, maxdiff=…" + максималната разлика**.
-
-Входът се състои от число **n**, следвано от **2*n цели числа**, всички по едно на ред.
-
-#### Примерен вход и изход
-
-| Вход | Изход | Коментар |
-| --- | --- | :---: |
-| 3
1
2
0
3
4
-1| Yes, value=3 | стойности = {3, 3, 3}
еднакви стойности |
-| 2
1
2
2
2 | No, maxdiff=1 | стойности = {3, 4}
разлики = {1}
макс. разлика = 1 |
-| 4
1
1
3
1
2
2
0
0 | No, maxdiff=4 | стойности = {2, 4, 4, 0}
разлики = {2, 0, 4}
макс. разлика = 4 |
-| 1
5
5 | Yes, value=10 | стойности = {10}
една стойност
еднакви стойности |
-| 2
-1
0
0
-1 | Yes, value=-1 | стойности = {-1, -1}
еднакви стойности |
-| 2
-1
2
0
-1 | No, maxdiff=2 | стойности = {1, -1}
разлики = {2}
макс. разлика = 2 |
-
-#### Насоки и подсказки
-
-Прочитаме входните числа **по двойки**. За всяка двойка пресмятаме **сумата** ѝ. Докато четем входните двойки, за всяка двойка, без първата, трябва да пресметнем **разликата с предходната**. За целта е необходимо да пазим в отделна променлива сумата на предходната двойка. Накрая намираме **най-голямата разлика** между две двойки. Ако е **0**, печатаме **“Yes”** + стойността, в противен случай - **“No”** + разликата.
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/510#11](https://judge.softuni.bg/Contests/Practice/Index/510#11).
-
-
-## Упражнения: графични и уеб приложения
-
-В настоящата глава се запознахме с **циклите** като конструкция в програмирането, която ни позволява да повтаряме многократно дадено действие или група от действия. Сега нека си поиграем с тях. За целта ще начертаем няколко фигурки, които се състоят от голям брой повтарящи се графични елементи, но този път не на конзолата, а в графична среда, използвайки "**графика с костенурка**". Ще е интересно. И никак не е сложно. Опитайте!
-
-### Задача: чертане с костенурка – графично GUI приложение
-
-Целта на следващото упражнение е да си поиграем с една **библиотека за рисуване**, известна като **“графика с костенурка” (turtle graphics)**. Ще изградим графично приложение, в което ще **рисуваме различни фигури**, придвижвайки нашата **“костенурка”** по екрана чрез операции от типа “отиди напред 100 позиции”, “завърти се надясно на 30 градуса”, “отиди напред още 50 позиции”. Приложението ще изглежда приблизително така:
-
-![](/assets/chapter-5-images/13.Turtle-graphics-01.png)
-
-Нека първо се запознаем с **концепцията за рисуване “Turtle Graphics”**. Може да разгледаме следните източници:
-
-* Дефиниция на понятието “turtle graphics”: [http://c2.com/cgi/wiki?TurtleGraphics](http://c2.com/cgi/wiki?TurtleGraphics)
-* Статия за “turtle graphics” в Wikipedia – [https://en.wikipedia.org/wiki/Turtle_graphics](https://en.wikipedia.org/wiki/Turtle_graphics)
-* Интерактивен онлайн инструмент за чертане с костенурка – [https://blockly-games.appspot.com/turtle](https://blockly-games.appspot.com/turtle)
-
-Започваме, като създаваме нов **C# Windows Forms проект**:
-
-![](/assets/chapter-5-images/13.Turtle-graphics-02.png)
-
-Инсталираме **NuGet** пакета **"Nakov.TurtleGraphics"** към нашия нов Windows Forms проект. От Visual Studio може да се добавят **външни библиотеки** (пакети) към съществуващ C# проект. Те добавят допълнителна функционалност към нашите приложения. Официалното хранилище (repository) за C# библиотеки се поддържа от Microsoft и се нарича **NuGet** ([http://www.nuget.org/](http://www.nuget.org)).
-
-Кликаме с десен бутон на мишката върху проекта в **Solution Explorer** и избираме [**Manage NuGet Packages…**]:
-
-![](/assets/chapter-5-images/13.Turtle-graphics-03.png)
-
-Ще се отвори прозорец за търсене и инсталиране на **NuGet** пакети. Нека потърсим пакети по ключова дума **`nakov`**. Ще излязат няколко пакета. От тях избираме пакет **`Nakov.TurtleGraphics`**. Натискаме [**Install**], за да го инсталираме към нашия C# проект:
-
-![](/assets/chapter-5-images/13.Turtle-graphics-04.png)
-
-Към нашия C# проект вече е включена външната библиотека **`Nakov.TurtleGraphics`**. Тя дефинира клас **`Turtle`**, който представлява **костенурка за рисуване**. За да го използваме, трябва да добавим в C# кода за нашата форма (**`Form1.cs`**). Добавяме следния код, най-отгоре в началото на файла:
-
-![](assets/chapter-5-images/13.Turtle-graphics-05.png)
-
-Сега трябва да сложим **три бутона** във формата и да променим **имената** и **свойствата** им, както е посочено по-долу:
-
-![](/assets/chapter-5-images/13.Turtle-graphics-06.png)
-
-Кликваме два пъти върху бутона [**Draw**], за да въведем кода, който да се изпълни при натискането му. Пишем следния код:
-
-![](/assets/chapter-5-images/13.Turtle-graphics-07.png)
-
-Този код мести и върти костенурката, която в началото е в центъра на екрана (в средата на формата), и чертае равностранен триъгълник. Може да го редактирате и да си поиграете с него.
-
-**Стартираме** приложението с [**Ctrl+F5**]. Тестваме го дали работи (натискаме [**Draw**] бутона няколко пъти):
-
-![](/assets/chapter-5-images/13.Turtle-graphics-08.png)
-
-Сега може да променим и усложним кода на **костенурката**:
-
-![](/assets/chapter-5-images/13.Turtle-graphics-09.png)
-
-Отново **стартираме** приложението с [**Ctrl+F5**]. Тестваме дали работи новата програма за костенурката:
-
-![](/assets/chapter-5-images/13.Turtle-graphics-10.png)
-
-Вече нашата костенурката чертае по-сложни фигури чрез приятно анимирано движение.
-
-Нека напишем кода и за останалите два бутона. Целта на бутона [**Reset**] е да изтрие графиката и да започне да чертае на чисто:
-
-![](/assets/chapter-5-images/13.Turtle-graphics-11.png)
-
-Целта на бутона [**Show / Hide Turtle**] е да показва или скрива костенурката:
-
-![](/assets/chapter-5-images/13.Turtle-graphics-12.png)
-
-Отново **стартираме** приложението с [**Ctrl+F5**] и го тестваме, дали работи коректно.
-
-### Задача: * чертане на шестоъгълник с костенурката
-
-Добавете бутон [**Hexagon**], който чертае правилен шестоъгълник:
-
-![](/assets/chapter-5-images/13.Turtle-graphics-13.png)
-
-**Подсказка:**
-
-В цикъл повторете 6 пъти следното:
-* Ротация на 60 градуса.
-* Движение напред 100.
-
-### Задача: * чертане на звезда с костенурката
-
-Добавете бутон [**Star**], който чертае звезда с 5 върха (**петолъчка**), като на фигурата по-долу:
-
-![](/assets/chapter-5-images/13.Turtle-graphics-14.png)
-
-**Подсказка:**
-
-Сменете цвета: **`Turtle.PenColor` = `Color.Green`**.
-
-В цикъл повторете 5 пъти следното:
-* Движение напред 200.
-* Ротация на 144 градуса.
-
-### Задача * чертане на спирала с костенурката
-
-Добавете бутон [**Spiral**], който чертае спирала с 20 върха като на фигурата по-долу:
-
-![](/assets/chapter-5-images/13.Turtle-graphics-15.png)
-
-**Подсказка:**
-
-Чертайте в цикъл, като движите напред и завъртате. С всяка стъпка увеличавайте постепенно дължината на движението напред и завъртайте на 60 градуса.
-
-### Задача: * чертане на слънце с костенурката
-
-Добавете бутон [**Sun**], който чертае слънце с 36 върха като на фигурата по-долу:
-
-![](/assets/chapter-5-images/13.Turtle-graphics-16.png)
-
-### Задача: * чертане на спирален триъгълник с костенурката
-
-Добавете бутон [**Triangle**], който чертае три триъгълника с по 22 върха като на фигурата по-долу:
-
-![](/assets/chapter-5-images/13.Turtle-graphics-17.png)
-
-**Подсказка:**
-
-Чертайте в цикъл като движите напред и завъртате. С всяка стъпка увеличавайте с 10 дължината на движението напред и завъртайте на 120 градуса. Повторете 3 пъти за трите триъгълника.
-
-Ако имате проблеми с примерния проект по-горе, **гледайте видеото** в началото на тази глава. Там приложението е направено на живо стъпка по стъпка с много обяснения. Или питайте във **форума на SoftUni**: https://softuni.bg/forum.
diff --git a/chapter-06-nested-loops-exam-problems.md b/chapter-06-nested-loops-exam-problems.md
deleted file mode 100644
index bf19420c1..000000000
--- a/chapter-06-nested-loops-exam-problems.md
+++ /dev/null
@@ -1,326 +0,0 @@
-# Глава 6.2. Вложени цикли – изпитни задачи
-
-В предходната глава разгледахме **вложените цикли** и как да ги използване за **рисуване** на различни **фигури на конзолата**. Научихме се как да отпечатваме фигури с различни размери, измисляйки подходяща логика на конструиране с използване на **единични и вложени `for`** цикли в комбинация с различни изчисления и програмна логика:
-
-```csharp
-for (var r = 1; r <= 5; r++)
-{
- Console.Write("*");
- for (var c = 1; c < 5; c++)
- Console.Write(" *");
- Console.WriteLine();
-}
-```
-
-Запознахме се и с **конструктора `new string`**, който дава възможност да се печата **даден символ определен** от нас **брой** пъти:
-
-``` csharp
-string printMe = new string('*', 5);
-```
-
-## Изпитни задачи
-
-Сега нека решим заедно няколко изпитни задачи, за да затвърдим наученото и да развием още алгоритмичното си мислене.
-
-## Задача: чертане на крепост
-
-Да се напише програма, която прочита от конзолата **цяло число n** и чертае **крепост** с ширина **2 * n колони** и височина **n реда** като в примерите по-долу. Лявата и дясната колона във вътрешността си са широки **n / 2**.
-
-### Входни данни
-
-Входът е **цяло число n** в интервала [**3 … 1000**].
-
-### Изходни данни
-
-Да се отпечатат на конзолата **n** текстови реда, изобразяващи **крепостта**, точно както в примерите.
-
-### Примерен вход и изход
-
-|Вход|Изход|Вход|Изход|
-|----|----|----|----|
-|3|/^\/^\
| |
\_/\_/
|4|/^^\/^^\
| |
| |
\__/\__/
|
-
-|Вход|Изход|Вход|Изход|
-|----|----|----|----|
-|5|/^^\__/^^\
| |
| |
| __ |
\__/ \__/
|8|/^^^^\____/^^^^\
| |
| |
| |
| |
| |
| ____ |
\____/ \____/
|
-
-### Насоки и подсказки
-
-От условието на задачата виждаме, че **входните данни** ще се състоят само от един ред, който ще съдържа в себе си едно **цяло число** в интервала [**3 … 1000**]. По тази причина ще използваме **променлива** от тип **`int`**.
-
-![](/assets/chapter-6-2-images/01.Draw-fort-01.png)
-
-След като вече сме декларирали и инициализирали входните данни, трябва да разделим **крепостта** на три части:
-* покрив
-* тяло
-* основа
-
-От примерите можем да разберем, че **покривът** е съставен от **две кули** и **междинна част**. Всяка кула се състои от начало **`/`**, среда **`^`** и край **`\`**.
-
- |
-\ е специален символ в езика C# и използвайки само него в метода Console.WriteLine(…) , конзолата няма да го разпечата, затова с \\ показваме на конзолата, че искаме да отпечатаме точно този символ, без да се интерпретира като специален (екранираме го, на английски се нарича “character escaping”). |
-
-
-Средата е с размер, равен на **`n / 2`**, следователно можем да отделим тази стойност в отделна **променлива**. Тя ще пази **големината** на **средата на кулата**.
-
-![](/assets/chapter-6-2-images/01.Draw-fort-02.png)
-
-Декларираме си и втора **променлива**, в която ще пазим **стойността** на частта **между двете кули**. Междинната част на покрива е с размер **`2 * n - 2 * colSize - 4`**.
-
-![](/assets/chapter-6-2-images/01.Draw-fort-03.png)
-
-За да отпечатаме на конзолата **покрива**, ще използваме **`new string`**, която приема два параметъра **`(char, int)`** и съединява даден символ **n** на брой пъти.
-
-![](/assets/chapter-6-2-images/01.Draw-fort-04.png)
-
-**Тялото на крепостта** се състои от начало **`|`**, среда **`(празно място)`** и край **`|`**. **Средата** от празно място е с големина **`2 * n - 2`**. Броят на **редовете** за стени, можем да определим от дадените ни примери - **`n - 3`**.
-
-![](/assets/chapter-6-2-images/01.Draw-fort-05.png)
-
-За да нарисуваме предпоследния ред, който е част от основата, трябва да отпечатаме начало **`|`**, среда **`(празно място)_(празно място)`** и край **`|`**. За да направим това, можем да използваме отново вече декларираните от нас променливи **`colSize`** и **`midSize`**, защото от примерите виждаме, че са равни на броя **`_`** в покрива.
-
-![](/assets/chapter-6-2-images/01.Draw-fort-06.png)
-
-Добавяме към стойността на **празните места** **`+ 1`**, защото в примерите имаме **едно** празно място повече.
-
-Структурата на **основата на крепостта** е еднаква с тази на **покрива**. Съставена е от **две кули** и **междинна част**. Всяка една **кула** има начало **`\`**, среда **`_`** и край **`/`**.
-
-![](/assets/chapter-6-2-images/01.Draw-fort-07.png)
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/513#0](https://judge.softuni.bg/Contests/Practice/Index/513#0).
-
-
-## Задача: пеперуда
-
-Да се напише програма, която прочита от конзолата **цяло число n** и чертае **пеперуда** с ширина **2 * n - 1 колони** и височина **2 * (n - 2) + 1 реда** като в примерите по-долу. **Лявата и дясната** ѝ **част** са **широки n - 1**.
-
-### Входни данни
-
-Входът е **цяло число n** в интервала [**3 … 1000**].
-
-### Изходни данни
-
-Да се отпечатат на конзолата **2 * (n - 2) + 1** текстови реда, изобразяващи **пеперудата**, точно както в примерите.
-
-### Примерен вход и изход
-
-|Вход|Изход|Вход|Изход|
-|---|---|---|---|
-|3|*\ /*
@
*/ \*
|5|***\ /***
---\ /---
***\ /***
@
***/ \***
---/ \---
***/ \***
|
-
-|Вход|Изход|
-|---|---|
-|7|*****\ /*****
-----\ /-----
*****\ /*****
-----\ /-----
*****\ /*****
@
*****/ \*****
-----/ \-----
*****/ \*****
-----/ \-----
*****/ \*****
|
-
-### Насоки и подсказки
-
-От условието на задачата виждаме, че **входните данни** ще бъдат прочетени само от един ред, който ще съдържа в себе си едно **цяло число** в интервала [**3 … 1000**]. По тази причина ще използваме **променлива** от тип **`int`**.
-
-![](/assets/chapter-6-2-images/02.Butterfly-01.png)
-
-Можем да разделим фигурата на 3 части - горно крило, тяло и долно крило. За да начертаем горното крило на пеперудата, трябва да го разделим на части - начало **`*`**, среда **`\ /`** и край **`*`**. След разглеждане на примерите можем да кажем, че началото е с големина **`n - 2`**.
-
-![](/assets/chapter-6-2-images/02.Butterfly-02.png)
-
-Виждаме също така, че горното крило на пеперудата е с размер **`n - 2`**, затова можем да направим цикъл, който да се повтаря **`halfRowSize`** пъти.
-
-![](/assets/chapter-6-2-images/02.Butterfly-03.png)
-
-От примерите можем да забележим, че на четен ред имаме начало **`*`**, среда **`\ /`** и край **`*`**, а на нечетен - начало **`-`**, среда **`\ /`** и край **`-`**. Следователно, трябва да направим **`if-else`** проверка дали е четен или нечетен редът и съответно да отпечатаме един от двата типа редове.
-
-![](/assets/chapter-6-2-images/02.Butterfly-04.png)
-
-За да направим **тялото на пеперудата**, можем отново да използваме **променливата** **`halfRowSize`** и да отпечатаме на конзолата точно **един** ред. Структурата на тялото е с начало **`(празно място)`**, среда **`@`** и край **`(празно място)`**.
-
-![](/assets/chapter-6-2-images/02.Butterfly-05.png)
-
-Остава да отпечатаме на конзолата и долното крило, което е еднакво с горното крило.
-
-![](/assets/chapter-6-2-images/02.Butterfly-06.png)
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/513#1](https://judge.softuni.bg/Contests/Practice/Index/513#1).
-
-
-## Задача: знак "Стоп"
-
-Да се напише програма, която прочита от конзолата **цяло число n** и чертае **предупредителен знак STOP** с размери като в примерите по-долу.
-
-### Входни данни
-
-Входът е **цяло число N** в интервала [**3 … 1000**].
-
-### Изходни данни
-
-Да се отпечатат на конзолата текстови редове, изобразяващи **предупредителния знак STOP**, точно както в примерите.
-
-### Примерен вход и изход
-
-|Вход|Изход|Вход|Изход|
-|----|----|----|----|
-|3|....\_\_\_\_\_\_\_....
...//\_\_\_\_\_\\\\...
..//\_\_\_\_\_\_\_\\\\..
.//\_\_\_\_\_\_\_\_\_\\\\.
//\_\_\_STOP!\_\_\_\\\\
\\\\\_\_\_\_\_\_\_\_\_\_\_//
.\\\\\_\_\_\_\_\_\_\_\_//.
..\\\\\_\_\_\_\_\_\_//..
|6|.......\_\_\_\_\_\_\_\_\_\_\_\_\_.......
......//\_\_\_\_\_\_\_\_\_\_\_\\\\......
.....//\_\_\_\_\_\_\_\_\_\_\_\_\_\\\\.....
....//\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\\\....
...//\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\\\...
..//\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\\\..
.//\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\\\.
//\_\_\_\_\_\_\_\_\_STOP!\_\_\_\_\_\_\_\_\_\\\\
\\\\\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_//
.\\\\\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_//.
..\\\\\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_//..
...\\\\\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_//...
....\\\\\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_//....
.....\\\\_\_\_\_\_\_\_\_\_\_\_\_\_//.....
|
-
-|Вход|Изход|
-|---|---|
-|7|........\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_........
.......//\_\_\_\_\_\_\_\_\_\_\_\_\_\\\\.......
......//\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\\\......
.....//\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\\\.....
....//\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\\\....
...//\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\\\...
..//\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\\\..
.//\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\\\\.
//\_\_\_\_\_\_\_\_\_\_\_STOP!\_\_\_\_\_\_\_\_\_\_\_\\\\
\\\\\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_//
.\\\\\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_//.
..\\\\\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_//..
...\\\\\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_//...
....\\\\\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_//....
.....\\\\\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_//.....
......\\\\\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_//......
|
-
-### Насоки и подсказки
-
-От условието на задачата виждаме, че **входните данни** ще бъдат прочетени само от един ред, който ще съдържа в себе си едно **цяло число** в интервала [**3 … 1000**]. По тази причина ще използваме **променлива** от тип **`int`**.
-
-![](/assets/chapter-6-2-images/03.Stop-01.png)
-
-Можем да **разделим** фигурата на **3 части** - горна, средна и долна. **Горната част** се състои от две подчасти - начален ред и редове, в които знака се разширява. **Началния ред** е съставен от начало **`.`**, среда **`_`** и край **`.`**. След разглеждане на примерите можем да кажем, че началото е с големина **`n + 1`** и е добре да отделим тази **стойност** в отделна **променлива**.
-
-![](/assets/chapter-6-2-images/03.Stop-02.png)
-
-Трябва да създадем и втора **променлива**, в която ще пазим **стойността** на **средата на началния ред** и е с големина **`2 * n + 1`**.
-
-![](/assets/chapter-6-2-images/03.Stop-03.png)
-
-След като вече сме декларирали и инициализирали двете променливи, можем да отпечатаме на конзолата началния ред.
-
-![](/assets/chapter-6-2-images/03.Stop-04.png)
-
-За да начертаем редовете, в които знака се **"разширява"**, трябва да създадем **цикъл**, който да се завърти **`n`** брой пъти. Структурата на един ред се състои от начало **`.`**, **`//`** + среда **`_`** + **`\\`** и край **`.`**. За да можем да използваме отново създадените **променливи**, трябва да намалим **`dots`** с 1 и **`underscopes`** с 2, защото ние вече сме **отпечатали** първия ред, а точките и долните черти в горната част от фигурата на всеки ред **намаляват**.
-
-![](/assets/chapter-6-2-images/03.Stop-05.png)
-
-На всяка следваща итерация **началото** и **краят** намаляват с 1, а **средата** се увеличава с 2.
-
-![](/assets/chapter-6-2-images/03.Stop-06.png)
-
-**Средната част** от фигурата има начало **`//`** + **`_`**, среда **`STOP!`** и край **`_`** + **`\\`**. Броят на долните черти **`_`** е **`(underscopes - 5) / 2`**.
-
-![](assets/chapter-6-2-images/03.Stop-07.png)
-
-**Долната част** на фигурата, в която знака се **смалява**, можем да направим като отново създадем **цикъл**, който да се завърти **`n`** брой пъти. Структурата на един ред е начало **`.`** + **`\\`**, среда **`_`** и край **`//`** + **`.`**. Броят на **точките** при първата итерация на цикъла трябва да е 0 и на всяка следваща да се **увеличава** с едно. Следователно можем да кажем, че големината на **точките в долната част от фигурата** е равна на **`i`**.
-
-![](/assets/chapter-6-2-images/03.Stop-08.png)
-
-За да работи нашата програма правилно, трябва на всяка итерация от **цикъла** да **намаляваме** броя на **`_`** с **2**.
-
-![](/assets/chapter-6-2-images/03.Stop-09.png)
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/513#2](https://judge.softuni.bg/Contests/Practice/Index/513#2).
-
-
-## Задача: стрелка
-Да се напише програма, която прочита от конзолата **цяло нечетно число n** и чертае **вертикална стрелка** с размери като в примерите по-долу.
-
-### Входни данни
-Входът е **цяло нечетно число n** в интервала [**3 … 79**].
-
-### Изходни данни
-Да се отпечата на конзолата вертикална стрелка, при която "**`#`**" (диез) очертава стрелката, а "**`.`**" - останалото.
-
-### Примерен вход и изход
-
-|Вход|Изход|Вход|Изход|
-|----|----|----|----|
-|3|.###.
.#.#.
##.##
.#.#.
..#..
|5|..#####..
..#...#..
..#...#..
..#...#..
###...###
.#.....#.
..#...#..
...#.#...
....#....
|
-
-|Вход|Изход|
-|---|---|
-|9|....#########....
....#.......#....
....#.......#....
....#.......#....
....#.......#....
....#.......#....
....#.......#....
....#.......#....
#####.......#####
.#.............#.
..#...........#..
...#.........#...
....#.......#....
.....#.....#.....
......#...#......
.......#.#.......
........#........
|
-
-### Насоки и подсказки
-
-От условието на задачата виждаме, че **входните данни** ще бъдат прочетени само от един ред, който ще съдържа в себе си едно **цяло число** в интервала [**3 … 1000**]. По тази причина ще използваме **променлива** от тип **`int`**.
-
-![](/assets/chapter-6-2-images/04.Arrow-01.png)
-
-Можем да разделим фигурата на **3 части** - горна, средна и долна. **Горната част** се състои от две подчасти - начален ред и тяло на стрелката. От примерите виждаме, че броят на **външните точки** в началния ред и в тялото на стрелката са **`(n - 1) / 2`**. Тази стойност можем да запишем в **променлива** **`outerDots`**.
-
-![](/assets/chapter-6-2-images/04.Arrow-02.png)
-
-Броят на **вътрешните точки** в тялото на стрелката е **`(n - 2)`**. Трябва да създадем **променлива** с име **`innerDots`**, която ще пази тази стойност.
-
-![](/assets/chapter-6-2-images/04.Arrow-03.png)
-
-От примерите можем да видим структурата на началния ред. Трябва да използваме декларираните и инициализирани от нас **променливи** **`outerDots`** и **`n`**, за да отпечатаме **началния ред**.
-
-![](assets/chapter-6-2-images/04.Arrow-04.png)
-
-За да нарисуваме на конзолата **тялото на стрелката**, трябва да създадем **цикъл**, който да се повтори **`n - 2`** пъти.
-
-![](/assets/chapter-6-2-images/04.Arrow-05.png)
-
-**Средата на фигурата** е съставена от начало **`#`**, среда **`.`** и край **`#`**. Броят на **`#`** е равен на **`outerDots`** и за това можем да използваме отново същата **променлива**.
-
-![](/assets/chapter-6-2-images/04.Arrow-06.png)
-
-За да начертаем **долната част на стрелката**, трябва да зададем нови стойности на двете **променливи** **`outerDots`** и **`innerDots`**.
-
-![](/assets/chapter-6-2-images/04.Arrow-07.png)
-
-Тъй като **`new string`** не може да съедини символ 0 пъти, **цикъла**, който ще направим, трябва да се завърти **`n - 2`** пъти и отделно да отпечатаме последния ред от фигурата. На всяка итерация **`outerDots`** се увеличава с 1, а **`innerDots`** намалява с 2.
-
-![](/assets/chapter-6-2-images/04.Arrow-08.png)
-
-**Последният ред** от нашата фигура е съставен от начало **`.`**, среда **`#`** и край **`.`**. Броят на **`.`** е равен на **`outerDots`**.
-
-![](/assets/chapter-6-2-images/04.Arrow-09.png)
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/513#3](https://judge.softuni.bg/Contests/Practice/Index/513#3).
-
-
-## Задача: брадва
-
-Да се напише програма, която прочита **цяло число n** и чертае брадва с размери, показани по-долу.
-Ширината на брадвата е **`5 * N`** колони.
-
-### Входни данни
-
-Входът е **цяло число n** в интервала [**2..42**].
-
-### Изходни данни
-
-Да се отпечата на конзолата **брадва**, точно както е в примерите.
-
-### Примерен вход и изход
-
-|Вход|Изход|Вход|Изход|
-|---|---|---|---|
-|2|------\*\*--
------\*-\*-
\*\*\*\*\*\*\*-\*-
------\*\*\*-
|5|---------------\*\*--------
---------------\*-\*-------
---------------\*--\*------
---------------\*---\*-----
---------------\*----\*----
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*----\*----
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*----\*----
---------------\*----\*----
--------------\*\*\*\*\*\*\*\*---
|
-
-|Вход|Изход|
-|---|---|
-|8|------------------------\*\*--------------
------------------------\*-\*-------------
------------------------\*--\*------------
------------------------\*---\*-----------
------------------------\*----\*----------
------------------------\*-----\*---------
------------------------\*------\*--------
------------------------\*-------\*-------
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*-------\*-------
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*-------\*-------
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*-------\*-------
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*-------\*-------
------------------------\*-------\*-------
-----------------------\*---------\*------
----------------------\*-----------\*-----
---------------------\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*----
|
-
-### Насоки и подсказки
-
-За решението на задачата е нужно първо да изчислим големината на **тиретата от ляво**, **средните тирета**, **тиретата от дясно** и цялата дължина на фигурата.
-
-![](/assets/chapter-6-2-images/05.Axe-01.png)
-
-След като сме декларирали и инициализирали **променливите**, можем да започнем да изчертаваме фигурата като започнем с **горната част**. От примерите можем да разберем каква е структурата на **първия ред** и да създадем цикъл, който се повтаря **`n`** брой пъти. На всяка итерация от цикъла **средните тирета** се увеличават с 1, а **тиретата от дясно** се намаляват с 1.
-
-![](/assets/chapter-6-2-images/05.Axe-02.png)
-
-За да можем да използваме отново създадените **променливи** при чертането на дръжката на брадвата, трябва да намалим **средните тирета** с 1,а **тиретата от дясно** да увеличим с 1.
-
-![](/assets/chapter-6-2-images/05.Axe-03.png)
-
-**Дръжката на брадвата** можем да нарисуваме, като завъртим цикъл, който се повтаря **`n - 2`** пъти. От примерите можем да разберем, каква е нейната структура.
-
-![](/assets/chapter-6-2-images/05.Axe-04.png)
-
-**Долната част** на фигурата, трябва да разделим на две подчасти - **глава на брадвата** и **последния ред от фигурата**. **Главата на брадвата** ще отпечатаме на конзолата, като направим цикъл, който да се повтаря **`n / 2 - 1`** пъти. На всяка итерация **тиретата от ляво** и **тиретата от дясно** намаляват с 1, а **средните тирета** се увеличават с 2.
-
-![](/assets/chapter-6-2-images/05.Axe-05.png)
-
-За **последния ред** от фигурата, можем отново да използваме трите, вече декларирани и инициализирани променливи **`leftDashes`**, **`middleDashes`**, **`rightDashes`**.
-
-![](/assets/chapter-6-2-images/05.Axe-06.png)
-
-### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/513#4](https://judge.softuni.bg/Contests/Practice/Index/513#4).
diff --git a/chapter-06-nested-loops.md b/chapter-06-nested-loops.md
deleted file mode 100644
index d9fdbec15..000000000
--- a/chapter-06-nested-loops.md
+++ /dev/null
@@ -1,461 +0,0 @@
-# Глава 6.1. Вложени цикли
-
-В настоящата глава ще разгледаме **вложените цикли** и как да използваме **`for`** цикли за **чертане** на различни **фигурки на конзолата**, които се състоят от символи и знаци, разположени в редове и колони на конзолата. Ще използваме **единични** и **вложени цикли** (цикли един в друг), **изчисления** и **проверки**, за да отпечатваме на конзолата прости и не чак толкова прости фигурки по зададени размери.
-
-
-## Видео
-
-
-
-
-### Пример: правоъгълник от 10 x 10 звездички
-
-Да се начертае в конзолата правоъгълник от **10 x 10** звездички.
-
-|Вход|Изход|
-|---|---|
-|(няма)|\*\*\*\*\*\*\*\*\*\*
\*\*\*\*\*\*\*\*\*\*
\*\*\*\*\*\*\*\*\*\*
\*\*\*\*\*\*\*\*\*\*
\*\*\*\*\*\*\*\*\*\*
\*\*\*\*\*\*\*\*\*\*
\*\*\*\*\*\*\*\*\*\*
\*\*\*\*\*\*\*\*\*\*
\*\*\*\*\*\*\*\*\*\*
\*\*\*\*\*\*\*\*\*\*
|
-
-#### Насоки и подсказки
-
-![](/assets/chapter-6-images/01.Rectangle-of-10-x-10-stars-01.png)
-
-Как работи примерът? Инициализира се **цикъл с променлива `i = 1`**, която се увеличава на всяка итерация на цикъла, докато е **по-малка или равна на 10**. Така кодът в тялото на цикъла се изпълнява **10 пъти**. В тялото на цикъла се печата на нов ред в конзолата **`new string('*', 10)`**, което създава низ от 10 звездички.
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/512#0](https://judge.softuni.bg/Contests/Practice/Index/512#0).
-
-
-### Пример: правоъгълник от N x N звездички
-
-Да се напише програма, която въвежда цяло положително число **n** и печата на конзолата **правоъгълник от N x N звездички**.
-
-|Вход|Изход|Вход|Изход|Вход|Изход|
-|---|---|---|---|---|---|
-|2|\*\*
\*\*
|3|\*\*\*
\*\*\*
\*\*\*
|4|\*\*\*\*
\*\*\*\*
\*\*\*\*
\*\*\*\*
|
-
-#### Насоки и подсказки
-
-![](/assets/chapter-6-images/02.Rectangle-of-N-x-N-stars-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/512#1](https://judge.softuni.bg/Contests/Practice/Index/512#1).
-
-
-## Вложени цикли
-
-Вложените цикли представляват конструкция, при която **в тялото на един цикъл** (външен) **се изпълнява друг цикъл** (вътрешен). За всяко завъртане на външния цикъл, вътрешният се извърта **целият**. Това се случва по следния начин:
-
- - При стартиране на изпълнение на вложени цикли първо **стартира външният цикъл**: извършва се **инициализация** на неговата управляваща променлива и след проверка за край на цикъла, се изпълнява кодът в тялото му.
- - След това се **изпълнява вътрешният цикъл**. Извършва се инициализация на началната стойност на управляващата му променлива, прави се проверка за край на цикъла и се изпълнява кодът в тялото му.
- - При достигане на зададената стойност за **край на вътрешния цикъл**, програмата се връща една стъпка нагоре и се продължава започналото изпълнение предходния (външния) цикъл. Променя се с една стъпка управляващата променлива за външния цикъл, проверява се дали условието за край е удовлетворено и **започва ново изпълнение на вложения (вътрешния) цикъл**.
- - Това се повтаря докато променливата на външния цикъл достигне условието за **край на цикъла**.
-
-Ето и един **пример**, с който нагледно да илюстрираме вложените цикли. Целта е да се отпечата отново правоъгълник от **`n`** * **`n`** звездички, като за всеки ред се извърта цикъл от **1** до **`n`**, а за всяка колона се извърта вложен цикъл от **1** до **`n`**:
-
-![](/assets/chapter-6-images/00.Nested-loops-01.png)
-
-Да разгледаме примера по-горе. След инициализацията на **първия (външен) цикъл**, започва да се изпълнява неговото **тяло**, което съдържа **втория (вложен) цикъл**. Той сам по себе си печата на един ред **`n`** на брой звездички. След като **вътрешният** цикъл **приключи** изпълнението си при първата итерация на външния, то след това **външният ще продължи**, т.е. ще отпечата един празен ред на конзолата. **След това** ще се извърши **обновяване** на променливата на **първия** цикъл и отново ще бъде изпълнен целият **втори** цикъл. Вътрешният цикъл ще се изпълни толкова пъти, колкото се изпълнява тялото на външния цикъл, в случая **`n`** пъти.
-
-### Пример: квадрат от звездички
-
-Да се начертае на конзолата квадрат от **N x N** звездички:
-
-|Вход|Изход|Вход|Изход|Вход|Изход|
-|---|---|---|---|---|---|
-|2|\* \*
\* \*
|3|\* \* \*
\* \* \*
\* \* \*
|4|\* \* \* \*
\* \* \* \*
\* \* \* \*
\* \* \* \*
|
-
-#### Насоки и подсказки
-
-Задачата е аналогична на предходната. Разликата тук е, че в тази трябва да обмислим как да печатаме интервал след звездичките по такъв начин, че да няма излишни интервали в началото или края.
-
-![](/assets/chapter-6-images/03.Square-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/512#2](https://judge.softuni.bg/Contests/Practice/Index/512#2).
-
-
-### Пример: триъгълник от долари
-
-Да се напише програма, която въвежда число **n** и печата **триъгълник от долари**.
-
-|Вход|Изход|Вход|Изход|Вход|Изход
-|---|---|---|---|---|---|
-|3|$
$ $
$ $ $
|4|$
$ $
$ $ $
$ $ $ $
|5|$
$ $
$ $ $
$ $ $ $
$ $ $ $ $
|
-
-#### Насоки и подсказки
-
-Задачата е **сходна** с тези за рисуване на **правоъгълник** и **квадрат**. Отново ще използваме **вложени цикли**, но тук има **уловка**. Разликата е в това, че **броя на колонките**, които трябва да разпечатаме, зависят от **реда**, на който се намираме, а не от входното число **`n`**. От примерните входни и изходни данни забелязваме, че **броят на доларите зависи** от това на кой **ред** се намираме към момента на печатането, т.е. 1 долар означава първи ред, 3 долара означават трети ред и т.н. Нека разгледаме долния пример по-подробно. Виждаме, че **променливата** на **вложения** цикъл е обвързана с променливата на **външния**. По този начин нашата програма печата желания триъгълник.
-
-![](/assets/chapter-6-images/04.Triangle-of-dollars-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/512#3](https://judge.softuni.bg/Contests/Practice/Index/512#3).
-
-
-### Пример: квадратна рамка
-
-Да се напише програма, която въвежда цяло положително число **n** и чертае на конзолата **квадратна рамка** с размер **n \* n**.
-
-|Вход|Изход|Вход|Изход|
-|---|---|---|---|
-|3|+ - +
| - |
+ - +
|4|+ - - +
| - - |
| - - |
+ - - +
|
-
-|Вход|Изход|Вход|Изход|
-|---|---|---|---|
-|5|+ - - - +
| - - - |
| - - - |
| - - - |
+ - - - +
|6|+ - - - - +
| - - - - |
| - - - - |
| - - - - |
| - - - - |
+ - - - - +
|
-
-#### Насоки и подсказки
-
-Можем да решим задачата по следния начин:
-* Четем от конзолата числото **`n`**.
-* Отпечатваме **горната част**: първо знак **`+`**, после **n-2** пъти **`-`** и накрая знак **`+`**.
-* Отпечатваме **средната част**: печатаме **n-2** реда като първо печатаме знак **`|`**, после **n-2** пъти **`-`** и накрая отново знак **`|`**. Това можем да го постигнем с вложени цикли.
-* Отпечатваме **долната част**: първо **`+`**, после **n-2** пъти **`-`** и накрая **`+`**.
-
-Ето и примерна имплементация на описаната идея, с вложени цикли:
-
-![](/assets/chapter-6-images/05.Square-frame-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/512#4](https://judge.softuni.bg/Contests/Practice/Index/512#4).
-
-
-### Пример: ромбче от звездички
-
-Да се напише програма, която въвежда цяло положително число **n** и печата **ромбче от звездички** с размер **n**.
-
-|Вход|Изход|Вход|Изход|
-|---|---|---|---|
-|1|\*
|2| \*
\* \*
\*
|
-
-
-|Вход|Изход|Вход|Изход|
-|---|---|---|---|
-|3| \*
\* \*
\* \* \*
\* \*
\*
|4| \*
\* \*
\* \* \*
\* \* \* \*
\* \* \*
\* \*
\*
|
-
-#### Насоки и подсказки
-
-За решението на тази задача е нужно да **разделим** мислено **ромба** на **две части** - **горна**, която включва **и** средния ред, и **долна**. За **разпечатването** на всяка една част ще използваме **два** отделни цикъла, като оставяме на читателя сам да намери зависимостта между **`n`** и променливите на циклите. За първия цикъл може да използваме следните насоки:
-
-* Отпечатваме **`n-row`** интервала.
-* Отпечатваме **`*`**.
-* Отпечатваме **`row-1`** пъти **`*`**.
-
-**Втората** (долна) част ще разпечатаме по **аналогичен** начин, което отново оставяме на читателя да се опита да направи сам.
-
-![](/assets/chapter-6-images/06.Rhombus-of-stars-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/512#5](https://judge.softuni.bg/Contests/Practice/Index/512#5).
-
-
-### Пример: коледна елха
-
-Да се напише програма, която въвежда число **n** (1 ≤ n ≤ 100) и печата коледна елха с височина **n+1**.
-
-|Вход|Изход|Вход|Изход|
-|---|---|---|---|
-|1| |
\* | \*
|2| |
\* | \*
\*\* | \*\*
|
-
-|Вход|Изход|Вход|Изход|
-|---|---|---|---|
-|3| |
\* | \*
\*\* | \*\*
\*\*\* | \*\*\*
|4| |
\* | \*
\*\* | \*\*
\*\*\* | \*\*\*
\*\*\*\* | \*\*\*\*
|
-
-#### Насоки и подсказки
-
-От примерите виждаме, че **елхата** може да бъде **разделена** на **три** логически части. **Първата** част са **звездичките и празните места преди и след тях**, **средната** част е **` | `**, а **последната** част са отново **звездички**, като този път **празни** места има само **преди** тях. Разпечатването може да бъде постигнато само с **един цикъл** и конструктора **`new string(…)`**, който ще използваме един път за звездичките и един път за интервалите.
-
-![](/assets/chapter-6-images/07.Christmas-tree-01.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/512#6](https://judge.softuni.bg/Contests/Practice/Index/512#6).
-
-
-## Чертане на по-сложни фигури
-
-Да разгледаме как можем да чертаем на конзолата фигури с по-сложна логика на конструиране, за които трябва повече да помислим преди да почнем да пишем.
-
-### Пример: слънчеви очила
-Да се напише програма, която въвежда цяло число **n** (3 ≤ n ≤ 100) и печата слънчеви очила с размер **5\*n x n** като в примерите:
-
-|Вход|Изход|Вход|Изход|
-|---|---|---|---|
-|3|\*\*\*\*\*\* \*\*\*\*\*\*
\*////\*|||\*////\*
\*\*\*\*\*\* \*\*\*\*\*\*
|4|\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*
\*//////\*||||\*//////\*
\*//////\* \*//////\*
\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*
|
-
-|Вход|Изход|
-|---|---|
-|5|\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*
\*////////\* \*////////\*
\*////////\*|||||\*////////\*
\*////////\* \*////////\*
\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*
|
-
-#### Насоки и подсказки
-
-От примерите виждаме, че очилата могат да се разделят на **три части** – горна, средна и долна. По-долу е част от кода, с който задачата може да се реши.
-
-При рисуването на горния и долния ред трябва да се изпечатат **`2 * n`** звездички, **`n`** интервала и **`2 * n`** звездички.
-
-![](/assets/chapter-6-images/08.Sunglasses-01.png)
-
-При печатането на **средната** част трябва да **проверим** дали редът е **`(n-1) / 2 - 1`**, тъй като от примерите е видно, че на **този ред** трябва да печатаме **вертикални чертички** вместо интервали.
-
-![](/assets/chapter-6-images/08.Sunglasses-02.png)
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/512#7](https://judge.softuni.bg/Contests/Practice/Index/512#7).
-
-
-### Пример: къщичка
-
-Да се напише програма, която въвежда число **n** (2 ≤ **n** ≤ 100) и печата **къщичка** с размери **n x n**, точно като в примерите:
-
-|Вход|Изход|Вход|Изход|Вход|Изход|
-|---|---|---|---|---|---|
-|2|**
||
|3|-\*-
\*\*\*
|\*|
|4|-\*\*-
\*\*\*\*
|\*\*|
|\*\*|
-
-|Вход|Изход|Вход|Изход|
-|---|---|---|---|
-|5|--\*--
-\*\*\*-
\*\*\*\*\*
|\*\*\*|
|\*\*\*|
|8|---\*\*---
--\*\*\*\*--
-\*\*\*\*\*\*-
\*\*\*\*\*\*\*\*
|\*\*\*\*\*\*|
|\*\*\*\*\*\*|
|\*\*\*\*\*\*|
|\*\*\*\*\*\*|
|
-
-
-#### Насоки и подсказки
-
-Разбираме от условието на задачата, че къщата е с размер **`n` x `n`**. Това, което виждаме от примерните вход и изход, е че:
-
-* Къщичката е разделена на 2 части: **покрив и основа**.
-
-![](/assets/chapter-6-images/09.House-01.png)
-
-* Когато **`n`** е четно число, върхът на къщичката е "тъп".
-* Когато **`n`** е нечетно число, **покривът** е с един ред по-голям от **основата**.
-
-##### Покрив
-* Съставен е от **звезди** и **тирета**.
-* В най-високата си част има една или две звезди, спрямо това дали **n** e четно или нечетно, както и тирета.
-* В най-ниската си част има много звезди и малко или никакви долни черти.
-* С всеки един ред по-надолу, **звездите** се увеличават с 2, а **тиретата** намаляват с 2.
-
-##### Основа
-* Дълга е **`n`** на брой реда.
-* Съставена е от **звезди** и **тирета**.
-* Редовете представляват 2 **тирета** - по едно в началото и в края на реда, както и **звезди** между тиретата с дължина на низа **`n - 2`**.
-
-Прочитаме **`n`** от конзолата и записваме стойността в променлива от тип **`int`**.
-
-![](/assets/chapter-6-images/09.House-02.png)
-
- |
-Много е важно да проверяваме дали са валидни входните данни! В тези задачи не е проблем директно да обръщаме прочетеното от конзолата в тип int , защото изрично е казано че ще получаваме валидни целочислени числа. Ако обаче правите по-сериозни приложения е добра практика да проверявате данните. Какво ще стане, ако вместо буквата "А" потребителя въведе число? |
-
-
-За да начертаем **покрива**, записваме колко ще е началният брой **звезди** в променлива **`stars`**:
-* Ако **`n`** е **четно** число, ще са 2 броя.
-* Ако е **нечетно**, ще е 1 брой.
-
-![](/assets/chapter-6-images/09.House-03.png)
-
-Изчисляваме дължината на **покрива**. Тя е равна на половината от **`n`**. Резултата записваме в променливата **`roofLength`**.
-
-![](/assets/chapter-6-images/09.House-04.png)
-
-Важно е да се отбележи че, когато **`n`** е нечетно число, дължината на покрива е по-голяма с един ред от тази на **основата**. В езика **C#**, когато два целочислени типа се делят и има остатък, то резултата ще е числото без остатъка.
-
-Пример:
-
-```csharp
-int result = 3 / 2; // резултат 1
-```
-
-Ако искаме да закръглим нагоре, трябва да използваме метода **`Math.Ceiling(…)`**:
-**`int result = (int)Math.Ceiling(3 / 2f);`**
-В този пример делението не е от 2 целочислени числа. "`f`" след число показва, че даденото число е от тип **`float`** (число с плаваща запетая). Резултатът от **`3 / 2f`** е **`1.5f`**. **`Math.Ceiling(…)`** закръгля делението нагоре. В нашият случай **`1.5f`** ще стане 2. **`(int)`** се използва, за да може да трансформираме типа обратно в **`int`**.
-
-След като сме изчислили дължината на покрива, завъртаме цикъл от 0 до **`roofLength`**. На всяка итерация ще:
-* Изчисляваме броя **тирета**, които трябва да изрисуваме. Броят ще е равен на **`(n - stars) / 2`**. Записваме го в променлива **`padding`**.
-
-![](/assets/chapter-6-images/09.House-05.png)
-
-* Отпечатваме на конзолата: "**тирета**" (**`padding / 2`** на брой пъти) + "**звезди**" (**`stars`** пъти) + "**тирета**" (**`padding / 2`** пъти).
-
-![](/assets/chapter-6-images/09.House-06.png)
-
-* Преди да свърши итерацията на цикъла добавяме 2 към **`stars`** (броя на **звездите**).
-
-![](/assets/chapter-6-images/09.House-07.png)
-
-
-
-След като сме приключили с **покрива**, е време за **основата**. Тя е по-лесна за печатане:
-* Започваме с цикъл от 0 до n (изключено).
-* Отпечатваме на конзолата: `|` + `*` (**`n - 2`** на брой пъти) + `|`.
-
-![](/assets/chapter-6-images/09.House-08.png)
-
-Ако всичко сме написали както трябва, задачата ни е решена.
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/512#8](https://judge.softuni.bg/Contests/Practice/Index/512#8).
-
-
-### Пример: диамант
-
-Да се напише програма, която въвежда цяло число **n** (1 ≤ **n** ≤ 100) и печата диамант с размер **n**, като в следните примери:
-
-|Вход|Изход|Вход|Изход|Вход|Изход|
-|---|---|---|---|---|---|
-|1|\*
|2|\*\*
|3|-\*-
\*-\*
-\*-
|
-
-|Вход|Изход|Вход|Изход|Вход|Изход|
-|---|---|---|---|---|---|
-|4|-\*\*-
\*--\*
-\*\*-
|5|--\*--
-\*-\*-
\*---\*
-\*-\*-
--\*--
|6|--\*\*--
-\*--\*-
\*----\*
-\*--\*-
--\*\*--
|
-
-|Вход|Изход|Вход|Изход|Вход|Изход|
-|---|---|---|---|---|---|
-|7|---\*---
--\*-\*--
-\*---\*-
\*-----\*
-\*---\*-
--\*-\*--
---\*---
|8|---\*\*---
--\*--\*--
-\*----\*-
\*------\*
-\*----\*-
--\*--\*--
---\*\*---
|9|----\*----
---\*-\*---
--\*---\*--
-\*-----\*-
\*-------\*
-\*-----\*-
--\*---\*--
---\*-\*---
----\*----
|
-
-#### Насоки и подсказки
-
-Това, което знаем от условието на задачата, е че диамантът е с размер **`n` x `n`**.
-
-От примерните вход и изход можем да си направим изводи, че всички редове съдържат точно по **`n`** символа и всички редове, с изключение на горните върхове, имат по **2 звезди**. Можем мислено да разделим диаманта на 2 части:
-* **Горна** част. Тя започва от горният връх до средата.
-* **Долна** част. Тя започва от реда след средата до най-долния връх (включително).
-
-##### Горна част
-* Ако **n** е **нечетно**, то тя започва с **1 звезда**.
-* Ако **n** е **четно**, то тя започва с **2 звезди**.
-* С всеки ред надолу, звездите се отдалечават една от друга.
-* Пространството между, преди и след **звездите** е запълнено с **тирета**.
-
-##### Долна част
-* С всеки ред надолу, звездите се събират една с друга. Това означава, че пространството (**тиретата**) между тях намалява, а пространството (**тиретата**) отляво и отдясно се увеличава.
-* В най-долната си част е с 1 или 2 **звезди**, спрямо това дали **n** е четно или не.
-
-##### Горна и долна част на диаманта
-* На всеки ред звездите са заобиколени от външни **тирета**, с изключение на средния ред.
-* На всеки ред има пространство между двете **звезди**, с изключение на първия и последния ред (понякога **звездата е 1**).
-
-Прочитаме стойността на **n** от конзолата и я записваме в променлива от тип **`int`**.
-
-![](/assets/chapter-6-images/10.Diamond-01.png)
-
-Започваме да чертаем горната част на диаманта. Първото нещо, което трябва да направим, е да изчислим началната стойност на външната бройка **тирета `leftRight`** (тиретата от външната част на **звездите**). Тя е равна на **`(n - 1) / 2`**, закръглено надолу.
-
-![](/assets/chapter-6-images/10.Diamond-02.png)
-
-След като сме изчислили **`leftRight`**, започваме да чертаем **горната част** на диаманта. Може да започнем, като завъртим **цикъл** от **`0`** до **`n / 2 + 1`** (закръглено надолу).
-
-При всяка итерация на цикъла трябва да се изпълнят следните стъпки:
-* Рисуваме по конзолата левите **тирета** (с дължина **`leftRight`**) и веднага след тях първата **звезда**.
-
-![](/assets/chapter-6-images/10.Diamond-03.png)
-
-* Ще изчислим разстоянието между двете **звезди**. Може да го изчислим като извадим от **n** дължината на външните **тирета**, както и числото 2 (бройката на **звездите**, т.е. очертанията на диаманта). Резултата от тази разлика записваме в променлива **`mid`**.
-
-![](/assets/chapter-6-images/10.Diamond-04.png)
-
-* Ако **`mid`** е по-малко от 0, то тогава знаем, че на реда трябва да има 1 звезда. Ако е по-голямо или равно на 0, то тогава трябва да начертаем **тирета** с дължина **`mid`** и една **звезда** след тях.
-* Рисуваме на конзолата десните външни **тирета** с дължина **`leftRight`**.
-
-![](/assets/chapter-6-images/10.Diamond-05.png)
-
-* В края на цикъла намаляваме **`leftRight`** с 1 (**звездите** се отдалечават).
-
-Готови сме с горната част.
-
-Рисуването на долната част е доста подобна на рисуването на горната част. Разликите са, че вместо да намаляваме **`leftRight`** с 1 към края на цикъла, ще увеличаваме **`leftRight`** с 1 в началото на цикъла. Също така, **цикълът ще е от 0 до `(n - 1) / 2`**.
-
-![](/assets/chapter-6-images/10.Diamond-01.png)
-
- |
-Повторението на код се смята за лоша практика, защото кодът става доста труден за поддръжка. Нека си представим, че имаме парче код (напр. логиката за чертането на ред от диаманта) на още няколко места и решаваме да направим промяна. За целта би било необходимо да минем през всичките места и да направим промените. Нека си представим, че трябва да използвате код не 1, 2 или 3 пъти, а десетки пъти. Начин за справяне с този проблем е като се използват методи. Можете да потърсите допълнителна информация за тях в Интернет, или да прегледате глава “10” (Методи). |
-
-
-Ако сме написали всичко коректно, задачата ни е решена.
-
-#### Тестване в Judge системата
-
-Тествайте решението си тук: [https://judge.softuni.bg/Contests/Practice/Index/512#9](https://judge.softuni.bg/Contests/Practice/Index/512#9).
-
-
-## Какво научихме от тази глава?
-
-Запознахме се с конструктора **`new string`**:
-
-```csharp
-string printMe = new string('*', 5);
-```
-
-Научихме се да чертаем фигури с вложени **`for`** цикли:
-
-```csharp
-for (var r = 1; r <= 5; r++)
-{
- Console.Write("*");
- for (var c = 1; c < 5; c++)
- Console.Write(" *");
- Console.WriteLine();
-}
-```
-
-
-## Упражнения: чертане на фигурки в уеб среда
-
-Сега, след като свикнахме с **вложените цикли** и как да ги използваме, за да чертаем фигурки на конзолата, можем да се захванем с нещо още по-интересно: да видим как циклите могат да се използват за **чертане в уеб среда**. Ще направим уеб приложение, което визуализира числов рейтинг (число от 0 до 100) със звездички. Такава визуализация се среща често в сайтове за електронна търговия, ревюта на продукти, оценки на събития, рейтинг на приложения и други.
-
-Не се притеснявайте, ако не разберете целия код, как е точно е направен и как точно работи проектът. Нормално е, сега се учим да пишем код, не сме стигнали до технологиите за уеб разработка. Ако имате трудности да си напишете проекта, следвайки описаните стъпки, **гледайте видеото** от началото на тази глава или питайте в SoftUni форума: https://softuni.bg/forum.
-
-### Задача: рейтинги – визуализация в уеб среда
-
-Да се разработи ASP.NET MVC уеб приложение за визуализация на рейтинг (число от 0 до 100). Чертаят се от 1 до 10 звездички (с половинки). Звездичките да се генерират с **`for`** цикъл.
-
-![](/assets/chapter-6-images/11.Ratings-01.png)
-
-Във Visual Studio създаваме ново ASP.NET MVC уеб приложение с език C#. Добавяме нов проект от [**Solution Explorer**] -> [**Add**] -> [**New Project…**] . Даваме смислено име, например "WebApp-Ratings".
-
-![](/assets/chapter-6-images/11.Ratings-02.png)
-
-Избираме тип на уеб приложението **MVC**.
-
-![](/assets/chapter-6-images/11.Ratings-03.png)
-
-Отваряме и редактираме файла **`Views/Home/Index.cshtml`**. Изтриваме всичко и въвеждаме следния код:
-
-![](/assets/chapter-6-images/11.Ratings-04.png)
-
-Този код създава уеб форма **`