Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 14 / task5.cpp
diff options
context:
space:
mode:
Commit44adf9d35e7e1b8075514b716e95c0fed6bdbe52 (patch)
Author
 Angeld55 <angel_dimitriev@abv.bg>
2021-01-09 16:19:28 +0200
Committer
 Angeld55 <angel_dimitriev@abv.bg>
2021-01-09 16:19:28 +0200
Filesd27e89c56fe213e82e7c990167224ec10f74c541 /Sem. 14/task5.cpp
Introduction_to_programming_FMI-44adf9d35e7e1b8075514b716e95c0fed6bdbe52.tar
Introduction_to_programming_FMI-44adf9d35e7e1b8075514b716e95c0fed6bdbe52.tar.gz
Introduction_to_programming_FMI-44adf9d35e7e1b8075514b716e95c0fed6bdbe52.zip
Parenta69b56e59ae0e7862c75d0ee014029e56ff5298a (diff)
added sem 14
1 files changed, 110 insertions, 0 deletions
-rw-r--r--Sem. 14/task5.cpp110
diff --git a/Sem. 14/task5.cpp b/Sem. 14/task5.cpp
new file mode 100644
index 0000000..9ea3923
--- /dev/null
+++ b/Sem. 14/task5.cpp
@@ -0,0 +1,110 @@
+#include <iostream>
+using namespace std;
+
+
+const int MAX_LEN = 1024;
+
+
+int contains(const char* str, const char* searched)
+{
+ int len1 = strlen(str);
+ int len2 = strlen(searched);
+ for (int i = 0; i < len1 - len2 + 1; i++)
+ {
+ bool found = true;
+ for (int j = 0; j < len2; j++)
+ {
+ if (searched[j] != str[i + j])
+ {
+ found = false;
+ break;
+ }
+ }
+ if (found)
+ return i;
+ }
+ return -1;
+}
+bool containsOnlyWhiteSpaces(const char* str)
+{
+ while (*str != '\0')
+ {
+ if (*str != ' ')
+ return false;
+ str++;
+ }
+ return true;
+}
+void makeSpaces(char* str, int startIndex, int spacesCount)
+{
+ for (int i = startIndex; i < startIndex + spacesCount; i++)
+ str[i] = ' ';
+}
+bool hasSameWords(const char* sentence1, const char* sentence2)
+{
+ int len1 = strlen(sentence1);
+ int len2 = strlen(sentence2);
+
+ char* s1 = new char[len1 + 1];
+ char* s2 = new char[len2 + 1];
+
+ char* s1Original = s1;// we change s1. So we could delete the whole array
+
+ strcpy(s1, sentence1);
+ strcpy(s2, sentence2);
+
+
+ for (int i = 0; i <= len1; i++)
+ {
+ if (s1[i] != ' ' &&s1[i] != '\0' )
+ continue;
+ //we are here if we found a space (or a \0 which means it's the last word).
+
+
+ //if the space is at the begining, there is not a word before it. So we just remove it.
+ if (i == 0)
+ {
+ s1 += 1;
+ len1--;
+ i = -1;
+ continue;
+ }
+
+ char* currentWord = new char[i + 1];
+
+ s1[i] = '\0';
+ strcpy(currentWord, s1);
+
+ if (i != len1) //if it's not the last word (because after the last word there is an '\0').
+ s1[i] = ' ';
+
+ int res = contains(s2, currentWord);
+ if (res == -1)
+ return false;
+
+ //we make the matched word as whitespaces.
+ makeSpaces(s1, 0, i);
+ makeSpaces(s2, res, i);
+
+ //we move the pointer to continue with the sentense.
+ s1 += i;
+ len1 -= i;
+
+ i = -1;
+ delete[] currentWord;
+ }
+
+ bool res = containsOnlyWhiteSpaces(s1Original) && containsOnlyWhiteSpaces(s2);
+ delete[] s1Original, s2;
+ return res;
+}
+int main()
+{
+ char sentence1[MAX_LEN];
+ char sentence2[MAX_LEN];
+
+ //cin.getline(sentence1, MAX_LEN);
+ //cin.getline(sentence2, MAX_LEN);
+
+ cout << hasSameWords("hello friends bye enemy", "bye friends hello enemy");
+} \ No newline at end of file