Website Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commit5ad46b18e68b498f42e39895e9a76c94cb50cc6f (patch)
Author
 Justsvetoslavov <justsvetoslavov@gmail.com>
2021-12-16 17:37:52 +0200
Committer
 Justsvetoslavov <justsvetoslavov@gmail.com>
2021-12-16 17:37:52 +0200
Files20e59e525da575bfad35c79a064a15d98ad6e043
Introduction_to_programming_FMI-5ad46b18e68b498f42e39895e9a76c94cb50cc6f.tar
Introduction_to_programming_FMI-5ad46b18e68b498f42e39895e9a76c94cb50cc6f.tar.gz
Introduction_to_programming_FMI-5ad46b18e68b498f42e39895e9a76c94cb50cc6f.zip
Parent19dc40c81d59f98bec58a532e4791b8f27e4f5ea (diff)
add solutions
diff --git a/pract_SI/Pract. 07/Solutions/my_strcat.cpp b/pract_SI/Pract. 07/Solutions/my_strcat.cpp
new file mode 100644
index 0000000..49d2d2e
--- /dev/null
+++ b/pract_SI/Pract. 07/Solutions/my_strcat.cpp
@@ -0,0 +1,12 @@
+//If destination has enough space
+void my_strcat(char* dest, const char* source)
+{
+ size_t destLength = my_strlen(dest);
+ size_t sourceLength = my_strlen(source);
+
+ for (size_t i = 0; i < sourceLength; i++)
+ {
+ dest[destLength + i] = source[i];
+ }
+ dest[destLength + sourceLength] = '\0';
+}
diff --git a/pract_SI/Pract. 07/Solutions/my_strcat_returnArray.cpp b/pract_SI/Pract. 07/Solutions/my_strcat_returnArray.cpp
new file mode 100644
index 0000000..a06fffc
--- /dev/null
+++ b/pract_SI/Pract. 07/Solutions/my_strcat_returnArray.cpp
@@ -0,0 +1,45 @@
+//way 1
+const char* my_strcat(const char* dest, const char* source)
+{
+ size_t destLength = my_strlen(dest);
+ size_t sourceLength = my_strlen(source);
+ size_t resultLength = my_strlen(dest) + my_strlen(source) + 1;
+ char* result = new char[resultLength];
+
+ for (size_t i = 0; i < destLength; i++)
+ result[i] = dest[i];
+
+ for (size_t y = 0; y < sourceLength; y++)
+ result[destLength + y] = source[y];
+
+ result[resultLength - 1] = '\0';
+ return result;
+}
+
+//==================================================================
+//way 2
+const char* my_strcat(const char* dest, const char* source)
+{
+ size_t destLength = my_strlen(dest);
+ size_t sourceLength = my_strlen(source);
+ size_t resultLength = my_strlen(dest) + my_strlen(source) + 1;
+ char* result = new char[resultLength];
+
+ int index = 0;
+ while (dest[index] != '\0')
+ {
+ result[index] = dest[index];
+ index++;
+ }
+
+ index = 0;//reset
+
+ while (source[index] != '\0')
+ {
+ result[destLength + index] = source[index];
+ index++;
+ }
+
+ result[resultLength - 1] = '\0';
+ return result;
+}
diff --git a/pract_SI/Pract. 07/Solutions/my_strcat_void.cpp b/pract_SI/Pract. 07/Solutions/my_strcat_void.cpp
new file mode 100644
index 0000000..3b0a501
--- /dev/null
+++ b/pract_SI/Pract. 07/Solutions/my_strcat_void.cpp
@@ -0,0 +1,41 @@
+unsigned my_strlen(const char *str) {
+ unsigned index = 0;
+
+ while (str[index] != TERMINATE_SYMBOL) {
+ index++;
+ }
+ return index;
+}
+
+//dest does NOT have enough space, return a new array
+void my_strcat4(char *&dest, const char* source)
+{
+ size_t destLength = my_strlen(dest);
+ size_t sourceLength = my_strlen(source);
+ size_t resultLength = destLength + sourceLength + 1;
+
+ char* temp = new char[destLength];
+ for (size_t i = 0; i < destLength; i++)
+ {
+ temp[i] = dest[i];
+ }
+
+ delete[] dest;
+ dest = nullptr;
+
+ dest = new char[resultLength];
+
+ for (size_t i = 0; i < destLength; i++)
+ {
+ dest[i] = temp[i];
+ }
+
+ for (size_t y = 0; y < sourceLength; y++)
+ {
+ dest[destLength + y] = source[y];
+ }
+
+ dest[resultLength - 1] = '\0';
+ delete[] temp;
+ temp = nullptr;
+}
diff --git a/pract_SI/Pract. 07/Solutions/my_strcmp.cpp b/pract_SI/Pract. 07/Solutions/my_strcmp.cpp
new file mode 100644
index 0000000..1115dd0
--- /dev/null
+++ b/pract_SI/Pract. 07/Solutions/my_strcmp.cpp
@@ -0,0 +1,19 @@
+int min(const size_t first,const size_t second)
+{
+ return (first < second ? first : second);
+}
+
+int my_strcmp(const char* str1, const char* str2)
+{
+ size_t str1Length = my_strlen(str1);
+ size_t str2Length = my_strlen(str2);
+ size_t smallerLength = min(str1Length, str2Length);
+
+ for (size_t i = NULL; i < smallerLength; i++)
+ {
+ if (str1[i] - str2[i] != NULL)
+ return str1[i] - str2[i];
+ }
+
+ return str1Length - str2Length;
+} \ No newline at end of file
diff --git a/pract_SI/Pract. 07/Solutions/my_strcpy.cpp b/pract_SI/Pract. 07/Solutions/my_strcpy.cpp
new file mode 100644
index 0000000..eb0b024
--- /dev/null
+++ b/pract_SI/Pract. 07/Solutions/my_strcpy.cpp
@@ -0,0 +1,10 @@
+void my_strcpy(char* dest, const char* source)
+{
+ size_t index = NULL;
+ while (source[index] != '\0')
+ {
+ dest[index] = source[index];
+ index++;
+ }
+ dest[index] = '\0';
+}
diff --git a/pract_SI/Pract. 07/Solutions/my_strlen.cpp b/pract_SI/Pract. 07/Solutions/my_strlen.cpp
new file mode 100644
index 0000000..332af71
--- /dev/null
+++ b/pract_SI/Pract. 07/Solutions/my_strlen.cpp
@@ -0,0 +1,7 @@
+size_t my_strlen(const char* str)
+{
+ size_t length = NULL ;
+ while (str[length] != '\0')
+ length++;
+ return length;
+} \ No newline at end of file