From 2af7aac08e3bae3ed6e99fe04c32d39acb4bb129 Mon Sep 17 00:00:00 2001 From: Angel Dimitriev Date: Tue, 2 Nov 2021 14:34:38 +0200 Subject: Add files via upload --- Sem. 04/example01_no_functions.cpp | 39 ++++++++++ Sem. 04/example01_with_functions.cpp | 27 +++++++ Sem. 04/example02-08.cpp | 141 +++++++++++++++++++++++++++++++++++ Sem. 04/example09 .cpp | 21 ++++++ Sem. 04/example10.cpp | 21 ++++++ 5 files changed, 249 insertions(+) create mode 100644 Sem. 04/example01_no_functions.cpp create mode 100644 Sem. 04/example01_with_functions.cpp create mode 100644 Sem. 04/example02-08.cpp create mode 100644 Sem. 04/example09 .cpp create mode 100644 Sem. 04/example10.cpp (limited to 'Sem. 04') diff --git a/Sem. 04/example01_no_functions.cpp b/Sem. 04/example01_no_functions.cpp new file mode 100644 index 0000000..06e6629 --- /dev/null +++ b/Sem. 04/example01_no_functions.cpp @@ -0,0 +1,39 @@ +#include +using namespace std; + + +int main() +{ + int n; + cin >> n; + + for (int i = 6; i < n; i += 6) + { + int firstToCheck = i - 1; + int secondToCheck = i + 1; + + //prime check + bool isFirstPrime = true; + double temp = sqrt(firstToCheck); + for (int j = 2; j <= temp; j++) + { + if (firstToCheck % j == 0) + isFirstPrime = false; + } + + if (!isFirstPrime) + continue; + + //prime check + bool isSecondPrime = true; + double temp2 = sqrt(secondToCheck); + for (int j = 2; j <= temp2; j++) + { + if (secondToCheck % j == 0) + isSecondPrime = false; + } + + if (isSecondPrime) + cout << firstToCheck << " " << secondToCheck << endl; + } +} \ No newline at end of file diff --git a/Sem. 04/example01_with_functions.cpp b/Sem. 04/example01_with_functions.cpp new file mode 100644 index 0000000..f33b6b9 --- /dev/null +++ b/Sem. 04/example01_with_functions.cpp @@ -0,0 +1,27 @@ +#include +using namespace std; + +bool isPrime(int n) +{ + double temp = sqrt(n); + + for (int i = 2; i <= temp; i++) + { + if (n % i == 0) + return false; + } + + return true; +} + +int main() +{ + int n; + cin >> n; + + for (int i = 6; i < n; i += 6) + { + if (isPrime(i - 1) && isPrime(i + 1)) + cout << i - 1 << " " << i + 1 << endl; + } +} \ No newline at end of file diff --git a/Sem. 04/example02-08.cpp b/Sem. 04/example02-08.cpp new file mode 100644 index 0000000..002a8ab --- /dev/null +++ b/Sem. 04/example02-08.cpp @@ -0,0 +1,141 @@ +#include +using namespace std; + + +//задача 2: +// Напишете функция, която приема цяло число и връща обърнатото му. +// 1234 - 4321 + +int reverse(unsigned int n) +{ + unsigned int result = 0; + + while (n != 0) + { + int lastDigit = n % 10; + (result *= 10) += lastDigit; + n /= 10; + } + + return result; +} + +//задача 3: Напишете функция, която приема цяло число и връща дали е палиндром + +//12321 -> true +//123 -> false; + +bool isPalindrome(unsigned int n) +{ + return n == reverse(n); +} +//задача 4: Напишете функция, която приема две цели числа - n и k. +//Функцията да връща дали k е суфикс на n. +// n = 1234 k = 34 true +// n = 1234 k = 234 true +// n = 1234 k = 1234 true +// n = 1234 k = 23 false + +bool isSuffix(unsigned int n, unsigned int k) +{ + if (k == 0 && (n % 10 != 0)) + return false; + + while (k != 0) + { + int lastDigitOfN = n % 10; + int lastDigitOfK = k % 10; + + if (lastDigitOfN != lastDigitOfK) + return false; + + n /= 10; + k /= 10; + } + + return true; +} + + +// задача 5: Напишете функция, която приема две цели числа -n и k. +// Функцията да връща дали k е префикс на n. + +// n = 1234, k = 12 true +// n = 1234, k = 23 false; + +// u е префикс на w <-> u ^rev е суфикс на w^rev +bool isPrefix(unsigned int n, unsigned int k) +{ + return isSuffix(reverse(n), reverse(k)); +} + +// задача 6: Напишете функция, която приема две числа - n,k. +// Функцията връща дали k е инфикс на n. + +bool isInfix(unsigned int n, unsigned int k) +{ + if (n == 0 && k == 0) + return true; + + while (n > 0) + { + if (isSuffix(n, k)) + return true; + n /= 10; + } + return false; +} + + +//задача. +//Да се напише функция, която приема цяло число и връща дали цифрите му са сортирани. + +// 1234 true +// 12379 true +// 1231 false +// 4321 true +// 4325 false +// 1111 true + +bool areDigitsSortedAscending(unsigned int n) +{ + while (n >= 10) + { + int lastDigit = n % 10; + int prevLastDigit = (n / 10) % 10; + + if (prevLastDigit > lastDigit) + return false; + + n /= 10; + } + + return true; +} + +bool areDigitsSortedDescending(int n) +{ + return areDigitsSortedAscending(reverse(n)); +} + +bool areDigitsSorted(int n) +{ + return areDigitsSortedDescending(n) || areDigitsSortedAscending(n); +} + +//задача. +// Напишете функция, която приема цяло число и връща дали се съдържа само от еднакви цифри. + +//Вход: 11111 Изход:true +//Вход: 123 Изход: false + +bool containOnlyOneDigit(int n) +{ + return areDigitsSortedDescending(n) && areDigitsSortedAscending(n); +} + + +int main() +{ + cout << containOnlyOneDigit(444) << endl; +} \ No newline at end of file diff --git a/Sem. 04/example09 .cpp b/Sem. 04/example09 .cpp new file mode 100644 index 0000000..f7f072b --- /dev/null +++ b/Sem. 04/example09 .cpp @@ -0,0 +1,21 @@ +#include +using namespace std; + +unsigned int log(unsigned int n, unsigned int k) +{ + int count = 0; + + while (n >= k) + { + n /= k; + count++; + } + + return count; +} + + +int main() +{ + cout << log(4, 10) << endl; +} \ No newline at end of file diff --git a/Sem. 04/example10.cpp b/Sem. 04/example10.cpp new file mode 100644 index 0000000..f7f072b --- /dev/null +++ b/Sem. 04/example10.cpp @@ -0,0 +1,21 @@ +#include +using namespace std; + +unsigned int log(unsigned int n, unsigned int k) +{ + int count = 0; + + while (n >= k) + { + n /= k; + count++; + } + + return count; +} + + +int main() +{ + cout << log(4, 10) << endl; +} \ No newline at end of file -- cgit v1.3.1-23-gd82d