diff options
Added todays up practice
1 files changed, 137 insertions, 0 deletions
| -rw-r--r-- | Year 1/Programming introduction/Practice-10.01.2022.cpp | 137 |
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(); +} |
