diff options
Add files via upload
1 files changed, 141 insertions, 0 deletions
| -rw-r--r-- | Sem. 04/example02-08.cpp | 141 |
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 <iostream>
+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 |
