diff --git a/homework_01/task_01/src/main.cpp b/homework_01/task_01/src/main.cpp index 0b3dcb2..e0bc778 100644 --- a/homework_01/task_01/src/main.cpp +++ b/homework_01/task_01/src/main.cpp @@ -3,8 +3,10 @@ #include int main() { - for (const auto& word : SplitString("asdas das das fgag (adasd 1fas)")) { - std::cout << word << "\n"; + for (const auto& word : SplitString( + "asdas das das fgag (adasd 1fas)") + ) { + std::cout << word<< "\n"; } return 0; } diff --git a/homework_01/task_01/src/utils.cpp b/homework_01/task_01/src/utils.cpp index a6989bd..993cf3e 100644 --- a/homework_01/task_01/src/utils.cpp +++ b/homework_01/task_01/src/utils.cpp @@ -1,7 +1,51 @@ #include "utils.hpp" -#include +#include +#include -std::vector SplitString(const std::string& data) { - return {}; -} +std::vector SplitString(const std::string& data, const char& del) { + std::vector allstrings; + std::string onestring = ""; + std::string brackets = { '(', ')' }; + bool in_brackets = 0; + for (const char& symbol : data) + { + if (symbol != del && symbol != brackets[in_brackets] && symbol != '\t') + onestring.push_back(symbol); + else + { + if (in_brackets) + { + if (symbol == brackets[in_brackets]) + { + onestring.push_back(symbol); + allstrings.push_back(onestring); + onestring = ""; + in_brackets = 0; + } + else + onestring.push_back(symbol); + } + else + { + if (symbol == brackets[in_brackets]) + { + if (onestring != "") + allstrings.push_back(onestring); + onestring = ""; + onestring.push_back(symbol); + in_brackets = 1; + } + else + { + if (onestring != "") + allstrings.push_back(onestring); + onestring = ""; + } + } + } + } + if (onestring != "") + allstrings.push_back(onestring); + return allstrings; +} \ No newline at end of file diff --git a/homework_01/task_01/src/utils.hpp b/homework_01/task_01/src/utils.hpp index 539ba98..c815da5 100644 --- a/homework_01/task_01/src/utils.hpp +++ b/homework_01/task_01/src/utils.hpp @@ -4,4 +4,4 @@ #include #include -std::vector SplitString(const std::string& data); +std::vector SplitString(const std::string& data, const char& del = ' '); diff --git a/homework_01/task_02/src/utils.cpp b/homework_01/task_02/src/utils.cpp index ebc7ffc..714ce95 100644 --- a/homework_01/task_02/src/utils.cpp +++ b/homework_01/task_02/src/utils.cpp @@ -1,7 +1,36 @@ #include "utils.hpp" -#include - -int Calculate(const std::string& data) { - return 0; -} +int Calculate(const std::string& data) +{ + int i = 0; + int a = 0; + while (isdigit(data[i])&& i < data.length()) + { + a *= 10; + a += int(data[i]) - 48; + i++; + } + std::string operation = ""; + while (!isdigit(data[i]) && i < data.length()) + { + operation += data[i]; + i++; + } + int b = 0; + while (isdigit(data[i]) && i < data.length()) + { + b *= 10; + b += int(data[i]) - 48; + i++; + } + if (operation == "+") + return a + b; + else if (operation == "-") + return a - b; + else if (operation == "*") + return a * b; + else if (operation == "/") + return a / b; + else + return 36606; +} \ No newline at end of file diff --git a/homework_01/task_02/src/utils.hpp b/homework_01/task_02/src/utils.hpp index f1bceeb..c5ece52 100644 --- a/homework_01/task_02/src/utils.hpp +++ b/homework_01/task_02/src/utils.hpp @@ -5,3 +5,4 @@ #include int Calculate(const std::string& data); +