diff options
new
2 files changed, 0 insertions, 120 deletions
| -rw-r--r-- | Sem. 10/pointers_basics.cpp | 26 | ||||
| -rw-r--r-- | Sem. 10/strings.cpp | 94 |
diff --git a/Sem. 10/pointers_basics.cpp b/Sem. 10/pointers_basics.cpp deleted file mode 100644 index e3c537a..0000000 --- a/Sem. 10/pointers_basics.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include <iostream> -using namespace std; - -const int SIZE = 5; -int main() -{ - int arr[SIZE] = {9,8,7,6,5}; //arr е променлива от тип const int* - int* ptr = arr; - - cout << arr << endl; // адресът на първата клетка в масива. - cout << ptr << endl; // същият адрес - - cout << *ptr <<endl; // Изкарва стойността на клетката, към която сочи указателят. (Тук това е 9) - cout << ptr[0] <<endl; // Отпечатва елементът на 0 отстъпа вдясно (тук пак това е 9) - cout << ptr[1] <<endl; // Отпечатва елементът на 1 отстъп вдясно (тук това е 8) - - ptr+=2; // "Премества" указателят 2 клетки надясно. - - cout << *ptr <<endl; // Изкарва стойността на клетката, към която сочи указателят. (Тук това е 7) - cout << ptr[0] <<endl; // Отпечатва елементът на 0 отстъпа вдясно (тук пак това е 7) - cout << ptr[1] <<endl; // Отпечатва елементът на 1 отстъп вдясно (тук това е 6) - - - - cout << *ptr <<endl; -} diff --git a/Sem. 10/strings.cpp b/Sem. 10/strings.cpp deleted file mode 100644 index bf0559f..0000000 --- a/Sem. 10/strings.cpp +++ /dev/null @@ -1,94 +0,0 @@ -#include <iostream> -using namespace std; - -// Низове (символни низове) стрингове - -// за да запазим текст с дължина k, ще ми трябват k+1 клетки -// k за текста и една клетка за \0; - - - -// Функцията ще променя ли масива? -// Ако не, винаги слагаме const! - -int stringLength(const char* str) -{ - int len = 0; - while (*str != '\0') - { - len++; - str++; - } - return len; -} - -int convertCharToDigit(char ch) -{ - return ch - '0'; -} - -//Фунцкия, която приема низ и го конверира в число, ако е възможно -// "345" ->345 -// "3456" -> 3456 -int convertFromString(const char* str) -{ - int len = stringLength(str); - int multiPl = 1; - - int result = 0; - for (int i = len - 1; i >= 0; i--) - { - result += multiPl * convertCharToDigit(str[i]); - multiPl *= 10; - } - return result; -} - -int min(int a, int b) -{ - return a < b ? a : b; -} -// Функция, която сравнява лексикографски 2 низа: -// - ако str1<str2 -// 0 ако str1 = str2 -// + ако str1>str2 -int stringCompare(const char* str1,const char* str2) -{ - int len1 = stringLength(str1); - int len2 = stringLength(str2); - int minLen = min(len1, len2); - - for (int i = 0; i < minLen; i++) - { - int diff = str1[i] - str2[i]; - if (diff != 0) - return diff; //Двата символа са различни. Връщаме кой е "по-малък". - } - //Ако е свършил цикълът, никъде няма разлика в символите. - if (len1 != len2) - return len1 - len2; - //Няма разлика в символите и няма разлика в дължините. - return 0; -} - -// Конкатенация на два низа. -void stringConcat(char* dest, const char* source) -{ - int destLength = stringLength(dest); - int sourceLength = stringLength(source); - - for (int i = 0; i <= sourceLength; i++) // Тук използваме <= за да вземем и терминиращата нула от source. - dest[destLength + i] = source[i]; -} - -const int LEN = 300; -int main() -{ - - char str[LEN] = "Test1"; - char str2[LEN] = "Test2"; - - stringConcat(str, str2); - cout << str2 << endl; - -} |
