Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 04_KN / tasks.cpp
diff options
context:
space:
mode:
Commit923e814a80dfbcb177509392c526869e406f8bc6 (patch)
Author
 Angel Dimitriev <achi_d@abv.bg>
2021-10-30 13:42:27 +0300
Committer
 GitHub <noreply@github.com>
2021-10-30 13:42:27 +0300
Files7655cd3ac5ac166812cd8c0713527c4648a4afd7 /Sem. 04_KN/tasks.cpp
Introduction_to_programming_FMI-923e814a80dfbcb177509392c526869e406f8bc6.tar
Introduction_to_programming_FMI-923e814a80dfbcb177509392c526869e406f8bc6.tar.gz
Introduction_to_programming_FMI-923e814a80dfbcb177509392c526869e406f8bc6.zip
Parentc7a3d4073cfc39775cb99254cf263ed295bea7f3 (diff)
Create tasks.cpp
1 files changed, 228 insertions, 0 deletions
-rw-r--r--Sem. 04_KN/tasks.cpp228
diff --git a/Sem. 04_KN/tasks.cpp b/Sem. 04_KN/tasks.cpp
index 8b13789..1b073bf 100644
--- a/Sem. 04_KN/tasks.cpp
+++ b/Sem. 04_KN/tasks.cpp
@@ -1 +1,229 @@
+#include <iostream>
+using namespace std;
+
+/*
+<параметри> = <тип> <име>
+<тип на връщане> <идентификатор> (<параметри>)
+{
+ // тяло на функцията/
+
+ //return - какво връща функцията в този случай.
+}
+
+*/
+
+
+//задача 1:
+// Въвежда се цяло число n.
+// Да се отпечатат всички двойки прости числа, които са
+// във вида 6k-1 и 6k+1 и са по по-малки от n.
+
+// n = 50
+// 5 7
+// 11 13
+// 17 19
+// 41 43
+
+bool isPrime(int n)
+{
+ double temp = sqrt(n);
+
+ if (n < 2)
+ return false;
+
+ for (int i = 2; i <= temp; i++)
+ {
+ if (n % i == 0)
+ return false;
+ }
+ return true;
+}
+
+
+
+//задача 2:
+// Напишете функция, която приема число и връща обърнатото.
+// Вход: 1234 Изход: 4321
+
+int reverse(int n)
+{
+ int result = 0;
+ while (n != 0)
+ {
+ int lastDigit = n % 10;
+ (result *= 10) += lastDigit; // result = (result = result * 10) + lastDigit
+ n /= 10;
+ }
+ return result;
+}
+
+//задача 3:
+// Напишете функция, която приема число и връща дали е палиндром.
+// Вход: 121 Изход: true
+// Вход: 1213 Изход: false
+bool isPalindrome(int n)
+{
+ return reverse(n) == n;
+}
+
+//задача 4: Напишете функция, която приема две цели числа - n и k.
+// и връща дали k е суфикс на n.
+
+// n = 1234
+// k = 34 true
+
+// n = 1234
+// k = 23 false
+
+bool isSuffix(unsigned n, unsigned k)
+{
+ if (n < k)
+ return false;
+
+ while (k != 0)
+ {
+ int nLastDigit = n % 10;
+ int kLastDigit = k % 10;
+
+ if (nLastDigit != kLastDigit)
+ return false;
+
+ n /= 10;
+ k /= 10;
+ }
+
+ return true;
+}
+// w is pref u <-> w^rev is suff u^rev
+
+//задача 5: Напишете функция, която приема две цели числа (n, k)
+//и връща дали k е префикс на n.
+bool isPrefix(unsigned n, unsigned k)
+{
+ return isSuffix(reverse(n), reverse(k));
+}
+
+//задача 6: Напишете функция, която приема две цели числа (n,k)
+// и връща дали k е инфикс на n.
+bool isInfix(unsigned n, unsigned k)
+{
+ while (n > k)
+ {
+ if (isSuffix(n, k))
+ return true;
+ n /= 10;
+ }
+ return false;
+}
+
+// задача 7: Напишете функция, която приема цяло число и връща
+// дали цифрите му са сортирани.
+
+// -> възходящо
+// -> низходящо
+bool areDigitsSortedIncreasing(unsigned n)
+{
+ cout << "areDigitsSortedIncreasing" << endl;
+ while (n >= 10)
+ {
+ int lastDigit = n % 10;
+ int prevLastDigit = (n / 10) % 10;
+
+ if (prevLastDigit > lastDigit)
+ return false;
+
+ n /= 10;
+ }
+ return true;
+}
+
+bool areDigitsSortedDecreasing(unsigned n)
+{
+ cout << "areDigitsSortedDecreasing" << endl;
+ return areDigitsSortedIncreasing(reverse(n));
+}
+
+bool areDigitsSorted(int n)
+{
+ return areDigitsSortedIncreasing(n) || areDigitsSortedDecreasing(n);
+}
+
+//задача 8: Въвежда се цяло число. Отпечатайте дали се състои от еднакви цифри
+// 111111 - труе
+// 123432 - фалсе
+
+bool areDigitsTheSame(int n)
+{
+ return areDigitsSortedIncreasing(n) && areDigitsSortedDecreasing(n);
+}
+
+void print(int n)
+{
+ cout << n << endl;
+
+ return; //функцията да приключи
+
+ //code - кодът е недостижим
+}
+
+int main()
+{
+ int n;
+ cin >> n;
+
+
+ //task1
+ // GOOD
+
+ //for (int i = 6; i < n; i += 6)
+ //{
+ // if (isPrime(i - 1) && isPrime(i + 1))
+ // cout << i - 1 << " " << i + 1 << endl;
+ //}
+
+
+
+
+ //task1
+ //BAD
+
+
+ //for (int i = 6; i < n; i += 6)
+ //{
+ // int firstToCheck = i - 1;
+ // int secondToCheck = i + 1;
+
+ // //primality check for the first
+
+ // bool isFirstPrime = true;
+ // double sqrtFirst = sqrt(firstToCheck);
+ // for (int j = 2; j <= sqrtFirst; j++)
+ // {
+ // if (firstToCheck % j == 0)
+ // {
+ // isFirstPrime = false;
+ // break;
+ // }
+ // }
+ // if (!isFirstPrime)
+ // continue;
+
+
+ // //primality check for the second
+
+ // bool isSecondPrime = true;
+ // double sqrtSecond = sqrt(secondToCheck);
+ // for (int j = 2; j <= sqrtSecond; j++)
+ // {
+ // if (secondToCheck % j == 0)
+ // {
+ // isSecondPrime = false;
+ // break;
+ // }
+ // }
+
+ // if (isSecondPrime)
+ // cout << firstToCheck << " " << secondToCheck << endl;
+ //}
+}