Website Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commitd7c6ef7130288c7a842184e9e280c8a07abfbc9c (patch)
Author
 angeld55 <angel_dimitriev@abv.bg>
2021-10-21 21:12:50 +0300
Committer
 angeld55 <angel_dimitriev@abv.bg>
2021-10-21 21:12:50 +0300
Files17f5ed73cc77d86e3c6d469887ff89ff87e61a2e
Introduction_to_programming_FMI-d7c6ef7130288c7a842184e9e280c8a07abfbc9c.tar
Introduction_to_programming_FMI-d7c6ef7130288c7a842184e9e280c8a07abfbc9c.tar.gz
Introduction_to_programming_FMI-d7c6ef7130288c7a842184e9e280c8a07abfbc9c.zip
Parent99d2566b60caa52133d431869e57cdb7a7279b6d (diff)
sem 3
diff --git a/Sem. 03/README.md b/Sem. 03/README.md
new file mode 100644
index 0000000..92d836a
--- /dev/null
+++ b/Sem. 03/README.md
@@ -0,0 +1,110 @@
+# Оператори за цикъл
+
+
+### Цикъл while
+
+
+![enter image description here](https://i.ibb.co/7GgKR7k/Untitled-Diagram-1.png)
+```c++
+while(<condition>)
+{
+ body...
+}
+```
+
+Пример с на **Алгоритъмът на Евклид**:
+```c++
+ n = 16, k = 24
+ <24, 16> 24 % 16 = 8
+ <16, 8> 16 % 8 = 0
+ <8, 0>
+ => gcd(16,24) = 8
+```
+
+
+### Цикъл for
+```c++
+for(int i = 0; i <= 300; i+=2)
+{
+ //body
+}
+```
+
+Структурата на for-циклите включва:
+1. инициализационен блок
+2. условие на цикъла
+3. команди за обновяване на водещите променливи
+4. Тяло на цикъла
+
+
+### Цикъл do-while
+
+_Do-while_ конструкцията е подобна _while_ цикъла, но с тази разлика, че условието е зададено в края т.е. проверката се прави след като се изпълни тялото на цикъла.
+```c++
+do
+{
+ //body
+} while(<condition>);
+```
+**Важно**: При do-while тялото се изпълнява поне веднъж!
+
+**Задача 1:** Да се напише програма, която приема поток от числа. Числата се събират, докато не срещне числото 0. Тогава трябва да се отпечата акумулираният резултат и да програмта да приключи.
+
+*Вход: 1 2 3 4 5 6 0, Изход: 21*
+
+*Вход: 9 9 1 0, Изход: 19*
+
+*Вход: 5 4 3 0 Изход: 12*
+
+**Задача 2:** Да се напише програма, която приема 2 числа. Да се отпечатат всички общи делители сортиран наобратно.
+
+*Вход: 28 21, Изход: 7 3 1*
+
+*Вход: 60 30 Изход: 30 15 10 5 3 1*
+
+*Вход: 5 4 3 0 Изход: 12*
+
+**Задача 3:** Да се напише програма, която приема число и премахва среднaта цифра , ако числото има нечетен брой цифри или премахва средните две цифри, ако числото има четен брой цифри. След това да се отпечата числото увеличено с 1-ца.
+
+
+*Вход: 1234, Изход: 14, 15*
+
+*Вход: 123 Изход: 13, 14*
+
+*Вход: 51234 Изход: 5134, 5135*
+
+*Вход: 5 Изход: 0, 1*
+
+**Задача 4:** Да се напише програма, която приема 2 числa - a и b и отпечатва всички прости числа в интервала [a, b].
+
+
+*Вход: 10 20, Изход: 11, 13, 17, 19*
+
+*Вход: 20 1 Изход: *
+
+*Вход: 1 20 Изход: 2 3 5 7 11 13 17 19*
+
+**Задача 5:** Да се напише програма, която приема цяло число и отпечатва дали е степен на 2-ката.
+
+*Вход: 1 , Изход: true*
+
+*Вход: 20 Изход: false*
+
+*Вход: 1024 Изход: true*
+**Задача 6:** Да се напише програма, която приема цяло число и го отпечатва като сума на степени 2-ката, без повторение. (всяко число има единствено такова представяне)
+
+*Вход: 5 , Изход: 2^2 + 2^0*
+
+*Вход: 20 Изход: 2^4 + 2^2*
+
+*Вход: 15 Изход: 2^3 + 2^2 + 2^1 +2^0*
+
+**Задача 7:** Въвеждат се 5 цели числа - a,b,c,d, e.
+Разглеждаме полинома f(x) = a * x^4 + b * x^3 + c* x^2 + d * x + e.
+Отпечатайте всички цели решения на f(x) >= 0 където x e в интервала [-100, 100]
+
+
+*Вход: -1 4 0 8 1 , Изход: -1 0 2 3*
+
+*Вход: 0 0 -1 5 -6 Изход: 2 3*
+
diff --git a/Sem. 03/example 1 - gcd (naive).cpp b/Sem. 03/example 1 - gcd (naive).cpp
new file mode 100644
index 0000000..65d82d4
--- /dev/null
+++ b/Sem. 03/example 1 - gcd (naive).cpp
@@ -0,0 +1,21 @@
+#include <iostream>
+
+using namespace std;
+int main()
+{
+ int n, k;
+ cin >> n >> k;
+
+ int min = n < k ? n : k;
+ int gcd = 1;
+ while (min >= 1)
+ {
+ if (n % min == 0 && k % min == 0)
+ {
+ gcd = min;
+ }
+ min--;
+ }
+
+ cout << gcd << endl;
+} \ No newline at end of file
diff --git a/Sem. 03/example 2 - gcd (euclid).cpp b/Sem. 03/example 2 - gcd (euclid).cpp
new file mode 100644
index 0000000..4f2a97d
--- /dev/null
+++ b/Sem. 03/example 2 - gcd (euclid).cpp
@@ -0,0 +1,24 @@
+#include <iostream>
+
+using namespace std;
+int main()
+{
+ int n, k;
+ cin >> n >> k;
+
+ if (n < k) //swap
+ {
+ int temp = k;
+ n = k;
+ k = temp;
+ }
+
+ while (k != 0)
+ {
+ int mod = n % k;
+ n = k;
+ k = mod;
+ }
+
+ cout << n << endl;
+} \ No newline at end of file
diff --git a/Sem. 03/example 3 - reverse and increment.cpp b/Sem. 03/example 3 - reverse and increment.cpp
new file mode 100644
index 0000000..e096f0b
--- /dev/null
+++ b/Sem. 03/example 3 - reverse and increment.cpp
@@ -0,0 +1,20 @@
+#include <iostream>
+using namespace std;
+
+int main()
+{
+ int n;
+ cin >> n;
+ int reversed = 0;
+
+ while (n != 0)
+ {
+ int lastDigit = n % 10;
+ (reversed *= 10) += lastDigit;
+
+ n /= 10;
+ }
+
+ reversed++;
+ cout << reversed << endl;
+} \ No newline at end of file
diff --git a/Sem. 03/example 4 - prime number.cpp b/Sem. 03/example 4 - prime number.cpp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Sem. 03/example 4 - prime number.cpp
diff --git a/Sem. 03/example 5 - prime factors.cpp b/Sem. 03/example 5 - prime factors.cpp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Sem. 03/example 5 - prime factors.cpp