diff --git a/homework_01/task_01/src/utils.cpp b/homework_01/task_01/src/utils.cpp index a6989bd..3d7b287 100644 --- a/homework_01/task_01/src/utils.cpp +++ b/homework_01/task_01/src/utils.cpp @@ -1,7 +1,37 @@ #include "utils.hpp" #include +#include +#include -std::vector SplitString(const std::string& data) { - return {}; -} +using namespace std; + +vector SplitString(const string& s){ + + string Current_String = ""; + const char* ptr = &(s[0]); + vector result; + + while(*ptr != '\0'){ + if (*ptr == '(') { + while((*ptr != ')') && (*ptr != '\0')){ + Current_String += *ptr; + ++ptr; + } + Current_String += *ptr; + ++ptr; + result.push_back(Current_String); + Current_String = ""; + } + if ((*ptr == ' ') || (*ptr == '\t')) { + if (Current_String != "") result.push_back(Current_String); + Current_String = ""; + } + else { + Current_String += *ptr; + } + ++ptr; + } + + return result; +} \ 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..aa40918 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(std::string& s); diff --git a/homework_01/task_02/src/utils.cpp b/homework_01/task_02/src/utils.cpp index ebc7ffc..cc1e6d6 100644 --- a/homework_01/task_02/src/utils.cpp +++ b/homework_01/task_02/src/utils.cpp @@ -1,7 +1,40 @@ #include "utils.hpp" #include +#include +#include -int Calculate(const std::string& data) { - return 0; +using namespace std; + +int Calculate(const string& str) { + + string CurrentString = ""; + const char* ptr = &(str[0]); + vector data; + + while(*ptr != '\0'){ + if ((*ptr == '+') ||(*ptr == '-')||(*ptr == '*')||(*ptr == '/')) { + if (CurrentString != ""){ + data.push_back(CurrentString); + CurrentString = ""; + } + CurrentString += *ptr; + data.push_back(CurrentString); + CurrentString = ""; + ++ptr; + } + + CurrentString += *ptr; + ++ptr; + } + data.push_back(CurrentString); + + int a = stoi(data[0]); + int b = stoi(data[2]); + + if (data[1] == "+") {return a + b;} + else if (data[1] == "-") {return a - b;} + else if (data[1] == "*") {return a * b;} + else if (data[1] == "/") {return a / b;} + else return 0; } diff --git a/homework_01/task_02/src/utils.hpp b/homework_01/task_02/src/utils.hpp index f1bceeb..c3f25af 100644 --- a/homework_01/task_02/src/utils.hpp +++ b/homework_01/task_02/src/utils.hpp @@ -4,4 +4,4 @@ #include #include -int Calculate(const std::string& data); +int Calculate(std::string& data);