Summary Files Commits Branches @commit @diff @stats
path: root / Year 1 / Programming introduction / Practice-10.01.2022.cpp
diff options
context:
space:
mode:
Commita6fd917db5d633aecfe0307b016108e78dd2f4f7 (patch)
Author
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-01-10 14:09:39 +0200
Committer
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-01-10 14:09:39 +0200
Files91df51eafe78b482049353d6c3b6ef399b951b82 /Year 1/Programming introduction/Practice-10.01.2022.cpp
uni-projects-a6fd917db5d633aecfe0307b016108e78dd2f4f7.tar
uni-projects-a6fd917db5d633aecfe0307b016108e78dd2f4f7.tar.gz
uni-projects-a6fd917db5d633aecfe0307b016108e78dd2f4f7.zip
Parent6ad65fce69d8f580d16b482a0decc5c4dadf88a2 (diff)
Added todays up practice
1 files changed, 137 insertions, 0 deletions
-rw-r--r--Year 1/Programming introduction/Practice-10.01.2022.cpp137
diff --git a/Year 1/Programming introduction/Practice-10.01.2022.cpp b/Year 1/Programming introduction/Practice-10.01.2022.cpp
new file mode 100644
index 0000000..7725c0a
--- /dev/null
+++ b/Year 1/Programming introduction/Practice-10.01.2022.cpp
@@ -0,0 +1,137 @@
+#include <iostream>
+
+// Задача първа:
+// Да се реализира рекурсивна функция която връща n!
+
+int fac(int n) {
+ if (n < 2) return 1;
+ return n * fac(n - 1);
+}
+
+void ex1() {
+ int n;
+ std::cin >> n;
+ std::cout << fac(n) << std::endl;
+}
+
+// Задача втора:
+// Да се напише рекурсивна функция, която повдига число на степен.
+
+int pow(int n, int power) {
+ if (power == 0) return 1;
+ return n * pow(n, power - 1);
+}
+
+void ex2() {
+ int n, power;
+ std::cin >> n >> power;
+ std::cout << pow(n, power) << std::endl;
+}
+
+// Задача трета:
+// Да се напише рекурсивна функция, която намира сумата на цифрите на число.
+
+int digitSum(int n) {
+ if (n == 0) return 0;
+ return n % 10 + digitSum(n / 10);
+}
+
+void ex3() {
+ int n;
+ std::cin >> n;
+ std::cout << digitSum(n) << std::endl;
+}
+
+// Задача четвърта:
+// Да се напише рекурсивна функция, която намира произведението на две числа.
+
+int prod(int n, int m) {
+ if (m == 0) return 0;
+ return n + prod(n, m - 1);
+}
+
+void ex4() {
+ int n, m;
+ std::cin >> n >> m;
+ std::cout << prod(n, m) << std::endl;
+}
+
+// Задача пета:
+// Да се напише рекурсивна функция, която обръща число.
+
+int len(int n) {
+ if (n / 10 == 0) return 1;
+ return len(n / 10) + 1;
+}
+
+int rev(int n) {
+ if (n / 10 == 0) return n;
+ return rev(n / 10) + (n % 10) * pow(10, len(n) - 1);
+}
+
+void ex5() {
+ int n;
+ std::cin >> n;
+ std::cout << rev(n) << std::endl;
+}
+
+// Задача шеста:
+// Да се напише рекурсивна функция, която проверява дали число е просто.
+
+bool isPrime(int n, int m = 2) {
+ if (n == m) return true;
+ return (n % m != 0) && isPrime(n, m + 1);
+}
+
+void ex6() {
+ int n;
+ std::cin >> n;
+ std::cout << isPrime(n) << std::endl;
+}
+
+// Задача седма:
+// Да се напише рекурсивна функция, която превръща число от десетична в двоична
+// бройна система.
+
+int toBinary(int n) {
+ if (n == 0) return 0;
+ return n % 2 + toBinary(n / 2) * 10;
+}
+
+void ex7() {
+ int n;
+ std::cin >> n;
+ std::cout << toBinary(n) << std::endl;
+}
+
+// Задача осма*:
+// Да се напише функция, която принтира всички булеви вектори с дължина n.
+
+void printPaddingZeroes(int count) {
+ if (count == 0) return;
+ std::cout << 0;
+ printPaddingZeroes(count - 1);
+}
+
+void printBooleanVectors(const int n, int padding = 0) {
+ if (n == -1) return;
+
+ printPaddingZeroes(padding);
+ std::cout << toBinary(n) << std::endl;
+
+ if (n > 1 && (n & (n - 1)) == 0)
+ padding++;
+
+ printBooleanVectors(n - 1, padding);
+}
+
+void ex8() {
+ int n;
+ std::cin >> n;
+ printBooleanVectors((1 << n) - 1);
+}
+
+
+int main() {
+ ex8();
+}