Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 15 / task2.cpp
diff options
context:
space:
mode:
1 files changed, 0 insertions, 119 deletions
-rw-r--r--Sem. 15/task2.cpp119
diff --git a/Sem. 15/task2.cpp b/Sem. 15/task2.cpp
deleted file mode 100644
index cc59a94..0000000
--- a/Sem. 15/task2.cpp
+++ /dev/null
@@ -1,119 +0,0 @@
-#include <iostream>
-using namespace std;
-
-int countWords(const char* text)
-{
- bool wasLastCharSpace = true;
- int wordCount = 0;
- int len = strlen(text);
-
- for (int i = 0; i < len; i++)
- {
- if (wasLastCharSpace && text[i] != ' ' )
- {
- wordCount++;
- wasLastCharSpace = false;
- }
- else if (text[i] == ' ')
- wasLastCharSpace = true;
- }
- return wordCount;
-
-}
-int getWordLength(const char* text, int start)
-{
- int len = 0;
- int index = start;
-
- while (text[index] != ' ' && text[index] != '\0')
- {
- index++;
- len++;
- }
- return len;
-}
-
-void copyChars(char* dest, const char* text, int start, int len)
-{
-
- for (int i = start, index = 0; index < len; i++, index++)
- dest[index] = text[i];
-
- dest[len] = '\0';
-}
-void fillWords(char** words, const char* text)
-{
- int len = strlen(text);
- int currentWordIndex = 0;
-
- for (int i = 0; i < len; i++)
- {
- if (text[i] == ' ')
- continue;
-
- int currentWordLen = getWordLength(text, i);
-
- words[currentWordIndex] = new char[currentWordLen + 1]; //(**)
-
- copyChars(words[currentWordIndex], text, i, currentWordLen);
-
- currentWordIndex++;
- i += currentWordLen;
- }
-}
-
-void swap(char** arr, int i, int j)
-{
- char* wordPtr = arr[i];
- arr[i] = arr[j];
- arr[j] = wordPtr;
-}
-void selectionSort(char** arr, int len)
-{
- for (int pos = 0; pos < len - 1; pos++)
- {
- int minIndex = pos;
- for (int i = pos; i < len; i++)
- {
- if (strcmp(arr[i], arr[minIndex]) < 0)
- minIndex = i;
- }
- if (pos != minIndex)
- swap(arr, pos, minIndex);
- }
-}
-
-void free(char** words, int wordsCount)
-{
- for (int i = 0; i < wordsCount; i++)
- delete[] words[i]; // (**)
- delete[] words; // (*)
-}
-
-
-bool hasDuplicatesWords(const char* text)
-{
- int wordsCount = countWords(text);
- char** words = new char*[wordsCount]; // (*)
- fillWords(words, text);
-
- selectionSort(words, wordsCount);
-
- for (int i = 0; i < wordsCount - 1; i++)
- {
- if (strcmp(words[i], words[i + 1]) == 0)
- return true;
- }
-
- return false;
-
- free(words, wordCount);
-
-}
-int main()
-{
- const char* text = " hello friends. how are you frienYds. ";
-
- cout << hasDuplicatesWords(text);
-
-}