diff --git a/homework_01/task_01/src/main.cpp b/homework_01/task_01/src/main.cpp index 0b3dcb2..0feb697 100644 --- a/homework_01/task_01/src/main.cpp +++ b/homework_01/task_01/src/main.cpp @@ -1,6 +1,6 @@ #include -#include +#include "utils.hpp" int main() { for (const auto& word : SplitString("asdas das das fgag (adasd 1fas)")) { diff --git a/homework_01/task_01/src/split_string_test.cpp b/homework_01/task_01/src/split_string_test.cpp index 82d4994..c501970 100644 --- a/homework_01/task_01/src/split_string_test.cpp +++ b/homework_01/task_01/src/split_string_test.cpp @@ -11,5 +11,6 @@ TEST_CASE("SplitString", "[simple]") { CHECK(SplitString("??? ??") == std::vector{"???", "??"}); CHECK(SplitString("a\na\ta a") == std::vector{"a\na", "a", "a"}); CHECK(SplitString("a (a a)") == std::vector{"a", "(a a)"}); - CHECK(SplitString("a (a a) b (asd as) ") == std::vector{"a", "(a a)", "b", "(asd as)"}); + CHECK(SplitString("a (a a) b (asd as) ") == + std::vector{"a", "(a a)", "b", "(asd as)"}); } diff --git a/homework_01/task_01/src/utils.cpp b/homework_01/task_01/src/utils.cpp index a6989bd..fd6150f 100644 --- a/homework_01/task_01/src/utils.cpp +++ b/homework_01/task_01/src/utils.cpp @@ -1,7 +1,36 @@ #include "utils.hpp" -#include +#include +#include +#include -std::vector SplitString(const std::string& data) { - return {}; -} +std::vector SplitString(std::string const& data) { + std::vector result; + std::string token = ""; + bool brackets_condition = false; + for (char const& active_element : data) { + if (brackets_condition) { + token.push_back(active_element); + if (active_element == ')') { + brackets_condition = false; + result.push_back(token); + token = ""; + } + } else { + if (active_element == ' ' || active_element == '\t') { + if (!token.empty()) { + result.push_back(token); + token = ""; + } + } else { + active_data.push_back(active_element); + if (active_element == '(') brackets_condition = true; + } + } + } + if (!token.empty()) { + result.push_back(active_data); + token = ""; + } + return result; +}; diff --git a/homework_01/task_01/src/utils.hpp b/homework_01/task_01/src/utils.hpp index 539ba98..5bd49fa 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); \ No newline at end of file diff --git a/homework_01/task_02/src/calculate_test.cpp b/homework_01/task_02/src/calculate_test.cpp index 57a8cb9..eccc131 100644 --- a/homework_01/task_02/src/calculate_test.cpp +++ b/homework_01/task_02/src/calculate_test.cpp @@ -3,7 +3,7 @@ #include "utils.hpp" TEST_CASE("Calculate", "[simple_sum]") { - CHECK(Calculate("1+2") == 3); + CHECK(Calculate("12+2") == 14); CHECK(Calculate("2+2") == 4); CHECK(Calculate("1+0") == 1); CHECK(Calculate("0+0") == 0); @@ -17,8 +17,15 @@ TEST_CASE("Calculate", "[simple_difference]") { } TEST_CASE("Calculate", "[simple_multiply]") { - CHECK(Calculate("5*2") == 10); + CHECK(Calculate("52*2") == 104); CHECK(Calculate("2*2") == 4); CHECK(Calculate("1*0") == 0); CHECK(Calculate("0*0") == 0); } + +TEST_CASE("Calculate", "[simple_del]") { + CHECK(Calculate("52/2") == 26); + CHECK(Calculate("2/2") == 1); + CHECK(Calculate("0/3") == 0); + CHECK(Calculate("23/1") == 23); +} \ No newline at end of file diff --git a/homework_01/task_02/src/main.cpp b/homework_01/task_02/src/main.cpp index 72a6f13..6d061bd 100644 --- a/homework_01/task_02/src/main.cpp +++ b/homework_01/task_02/src/main.cpp @@ -1,5 +1,4 @@ #include - #include int main() { diff --git a/homework_01/task_02/src/utils.cpp b/homework_01/task_02/src/utils.cpp index ebc7ffc..37a84b4 100644 --- a/homework_01/task_02/src/utils.cpp +++ b/homework_01/task_02/src/utils.cpp @@ -1,7 +1,39 @@ #include "utils.hpp" +#include +#include #include -int Calculate(const std::string& data) { - return 0; -} +int Calculate(const std::string &data) { + std::string number = ""; + char action; + int variables[2]; + int answer = 0; + + for (char c : data) { + if (c >= '0' && c <= '9') { + number = number + c; + } else { + numbers.push_back(std::stoi(number_part)) number.clear(); + if ((c == '+') || (c == '-') || (c == '*') || (c == '/')) { + action = c; + } + } + } + + int_numbers[n] = atoi(number.c_str()); + + if (action == '+') { + answer = (int_numbers[0] + int_numbers[1]); + } + if (action == '-') { + answer = (int_numbers[0] - int_numbers[1]); + } + if (action == '*') { + answer = (int_numbers[0] * int_numbers[1]); + } + if (action == '/') { + answer = (int_numbers[0] / int_numbers[1]); + } + return answer; +} \ No newline at end of file