Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 15 / task2.cpp
diff options
context:
space:
mode:
Commit16620176eaf6ebf6e7e24a4e27f3e68f7431f2fc (patch)
Author
 Angel Dimitriev <achi_d@abv.bg>
2022-01-17 02:00:07 +0200
Committer
 GitHub <noreply@github.com>
2022-01-17 02:00:07 +0200
Filesf82263eaf55f6849955dccc6bf0d7317246f728d /Sem. 15/task2.cpp
Introduction_to_programming_FMI-16620176eaf6ebf6e7e24a4e27f3e68f7431f2fc.tar
Introduction_to_programming_FMI-16620176eaf6ebf6e7e24a4e27f3e68f7431f2fc.tar.gz
Introduction_to_programming_FMI-16620176eaf6ebf6e7e24a4e27f3e68f7431f2fc.zip
Parentf0214efafa2f98eb1ae5c83fb16ffacde2492231 (diff)
Add files via upload
1 files changed, 50 insertions, 0 deletions
-rw-r--r--Sem. 15/task2.cpp50
diff --git a/Sem. 15/task2.cpp b/Sem. 15/task2.cpp
new file mode 100644
index 0000000..55229c2
--- /dev/null
+++ b/Sem. 15/task2.cpp
@@ -0,0 +1,50 @@
+#include <iostream>
+
+
+bool isValidSymbol(char ch)
+{
+ return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9');
+}
+//true word1 < word2
+bool isLexLess(const char* word1, const char* word2)
+{
+ while (isValidSymbol(*word1) && isValidSymbol(*word2))
+ {
+ if (*word1 < *word2)
+ return true;
+ else if (*word1 > *word2)
+ return false;
+ word1++;
+ word2++;
+ }
+ return !isValidSymbol(*word1);
+}
+
+
+const char* minWord(const char* str)
+{
+ size_t len = strlen(str);
+ const char* currentMin = nullptr;
+ const char* iter = str;
+ while (*iter != '\0')
+ {
+ if (isValidSymbol(*iter) && ((iter == str) || !isValidSymbol(*(iter - 1))))
+ {
+ if (currentMin == nullptr)
+ {
+ currentMin = iter;
+ }
+ else
+ {
+ if (isLexLess(iter, currentMin))
+ currentMin = iter;
+ }
+ }
+ iter++;
+ }
+ return currentMin;
+}
+int main()
+{
+ std::cout << minWord("me? why always me");// 1 -> 3 -> 6 -> 18 -> 19
+} \ No newline at end of file