diff --git a/README.md b/README.md index b7fc493..96287aa 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,4 @@ ### Для удобства можно пользоваться папкой lib, все файлы из этой папки будут подключаться к любой задаче -### Можно получить дополнительные баллы, если добавить интересные текстовые задачи. Необходимы текст задачи, решение и тесты. Каждая задача отдельный ПР, полчуть дополнительные баллы можно только если пулл реквест замержен в основную ветку. - ### Код должен быть отформатирован clang-format'ом со стилем Google diff --git a/sandbox/template/src/main.cpp b/sandbox/template/src/main.cpp index 0e4393b..38d1d38 100644 --- a/sandbox/template/src/main.cpp +++ b/sandbox/template/src/main.cpp @@ -1,3 +1,7 @@ #include -int main() { return 0; } +int main () { + int k = 65; + auto sup_k = static_cast (k); + std :: cout << sup_k; +} \ No newline at end of file diff --git a/task_01/CMakeLists.txt b/task_01/CMakeLists.txt index 0e23984..ca55045 100644 --- a/task_01/CMakeLists.txt +++ b/task_01/CMakeLists.txt @@ -4,7 +4,7 @@ get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_LIST_DIR} NAME) string(REPLACE " " "_" PROJECT_NAME ${PROJECT_NAME}) project(${PROJECT_NAME} C CXX) -set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) file(GLOB_RECURSE source_list "src/*.cpp" "src/*.hpp") diff --git a/task_01/src/main b/task_01/src/main new file mode 100755 index 0000000..2b66c05 Binary files /dev/null and b/task_01/src/main differ diff --git a/task_01/src/main.cpp b/task_01/src/main.cpp index 0e4393b..98eaacf 100644 --- a/task_01/src/main.cpp +++ b/task_01/src/main.cpp @@ -1,3 +1,3 @@ #include -int main() { return 0; } +int main() {} diff --git a/task_01/src/mediana.hpp b/task_01/src/mediana.hpp new file mode 100644 index 0000000..813057e --- /dev/null +++ b/task_01/src/mediana.hpp @@ -0,0 +1,8 @@ +#include +#include + +inline int mediana(int first_number, int second_number, int third_number) { + std ::vector nums = {first_number, second_number, third_number}; + sort(nums.begin(), nums.end()); + return (nums[1]); +} \ No newline at end of file diff --git a/task_01/src/sum.hpp b/task_01/src/sum.hpp deleted file mode 100644 index 97cc293..0000000 --- a/task_01/src/sum.hpp +++ /dev/null @@ -1 +0,0 @@ -int Sum(int first_number, int second_number, int third_number) { return 6; } \ No newline at end of file diff --git a/task_01/src/test.cpp b/task_01/src/test.cpp index 0c33b55..c7ec792 100644 --- a/task_01/src/test.cpp +++ b/task_01/src/test.cpp @@ -1,5 +1,10 @@ +#include "mediana.hpp" #include -#include - -TEST(Test, Simple) { ASSERT_EQ(Sum(1, 2, 3), 6); } \ No newline at end of file +TEST(Test, Simple) { + ASSERT_EQ(mediana(1, 2, 3), 2); + ASSERT_EQ(mediana(3, 13, 2), 3); + ASSERT_EQ(mediana(3, 65, 17), 17); + ASSERT_EQ(mediana(-2, 8, -100), -2); + ASSERT_EQ(mediana(-5, -8, -17), -8); +} diff --git a/task_02/src/main b/task_02/src/main new file mode 100755 index 0000000..26aa2b7 Binary files /dev/null and b/task_02/src/main differ diff --git a/task_02/src/main.cpp b/task_02/src/main.cpp index 0e4393b..98eaacf 100644 --- a/task_02/src/main.cpp +++ b/task_02/src/main.cpp @@ -1,3 +1,3 @@ #include -int main() { return 0; } +int main() {} diff --git a/task_02/src/max_value.hpp b/task_02/src/max_value.hpp new file mode 100644 index 0000000..b8b0a8b --- /dev/null +++ b/task_02/src/max_value.hpp @@ -0,0 +1,19 @@ +#include +#include +#include + +struct array_error{ + std :: string message {"array error"}; +}; + +inline int max_value(std :: vector arr, int length) { + if (length < 1) + throw array_error {}; + + int max_val = {arr[0]}; + for (auto num:arr) { + max_val = std::max(max_val, num); + } + + return max_val; +} \ No newline at end of file diff --git a/task_02/src/test.cpp b/task_02/src/test.cpp index 87cef73..832908b 100644 --- a/task_02/src/test.cpp +++ b/task_02/src/test.cpp @@ -1,5 +1,33 @@ #include +#include +#include -TEST(Test, Simple) { - ASSERT_EQ(1, 1); // Stack [] +TEST(max_value, normal) { + std::vector a {1,2,3,4}; + ASSERT_EQ(max_value(a, 4), 4); +} + +TEST(max_value, unsorted) { + std::vector a {5, 16, 7, 48, 3, 13}; + ASSERT_EQ(max_value(a, 6), 48); +} + +TEST(max_value, bellow_zero) { + std::vector a {-1,-5,-6,-10,-3}; + ASSERT_EQ(max_value(a, 5), -1); +} + +TEST(max_value, repeated) { + std::vector a {1,2,2,2,2,5,5,5}; + ASSERT_EQ(max_value(a, 8), 5); +} + +TEST(max_value, error) { + std::vector a {7, 0, -5, 13, 14, -48, 7, 18, 17, 1, -30}; + ASSERT_THROW(max_value(a, 0), array_error); +} + +TEST(max_value, all) { + std::vector a {7, 0, -5, 13, 14, -48, 7, 18, 17, 1, -30}; + ASSERT_EQ(max_value(a, 11), 18); } \ No newline at end of file diff --git a/task_03/src/main b/task_03/src/main new file mode 100755 index 0000000..fdb5bcf Binary files /dev/null and b/task_03/src/main differ diff --git a/task_03/src/main.cpp b/task_03/src/main.cpp index 76e8197..7bdf179 100644 --- a/task_03/src/main.cpp +++ b/task_03/src/main.cpp @@ -1 +1,5 @@ -int main() { return 0; } +#include + + +int main() {} + diff --git a/task_03/src/reverse.cpp b/task_03/src/reverse.cpp deleted file mode 100644 index 3457424..0000000 --- a/task_03/src/reverse.cpp +++ /dev/null @@ -1,3 +0,0 @@ -#include "reverse.hpp" - -void Reverse(int *array, size_t len) {} \ No newline at end of file diff --git a/task_03/src/reverse.hpp b/task_03/src/reverse.hpp index 450a729..589f381 100644 --- a/task_03/src/reverse.hpp +++ b/task_03/src/reverse.hpp @@ -1,5 +1,17 @@ -#pragma once +#include +#include -#include +struct array_error{ + std :: string message {"array errror"}; +}; -void Reverse(int *array, size_t len); +inline std::vector Reverse (std::vector arr, int length) { + if (length <1) + throw array_error {}; + + std :: vector rev_arr {}; + for (int i{length-1}; i>=0; --i) + rev_arr.push_back (arr[i]); + + return rev_arr; +} \ No newline at end of file diff --git a/task_03/src/test.cpp b/task_03/src/test.cpp index 2d868db..eb01756 100644 --- a/task_03/src/test.cpp +++ b/task_03/src/test.cpp @@ -1,6 +1,30 @@ #include - +#include #include "reverse.hpp" -TEST(Reverse, Simple) {} +TEST(Reverse, error) { + std :: vector a {}; + ASSERT_THROW (Reverse (a, 0), array_error); +} + +TEST(Reverse, normal) { + std :: vector a {1,2,3,4}; + std :: vector b {4,3,2,1}; + a = Reverse (a, a.size()); + ASSERT_EQ (a, b); +} + +TEST(Reverse, bellow_zero) { + std :: vector a {-5,-3,-10}; + std :: vector b {-10,-3,-5}; + a = Reverse (a, a.size()); + ASSERT_EQ (a, b); +} + +TEST(Reverse, repeated) { + std :: vector a {1,1,1,1}; + std :: vector b {1,1,1,1}; + a = Reverse (a, a.size()); + ASSERT_EQ (a, b); +} \ No newline at end of file diff --git a/task_04/src/main.cpp b/task_04/src/main.cpp index 0e4393b..7bdf179 100644 --- a/task_04/src/main.cpp +++ b/task_04/src/main.cpp @@ -1,3 +1,5 @@ #include -int main() { return 0; } + +int main() {} + diff --git a/task_04/src/move_array.hpp b/task_04/src/move_array.hpp new file mode 100644 index 0000000..3fa6d44 --- /dev/null +++ b/task_04/src/move_array.hpp @@ -0,0 +1,21 @@ +#include +#include + +struct array_error{ + std :: string message {"array errror"}; +}; + +inline std :: vector move_array (std::vector arr, int length, int N) { + if (length < 1) + throw array_error {}; + + N = N % length; + std :: vector moved_arr = arr; + for (int i{0}; i +#include -TEST(TopologySort, Simple) { - ASSERT_EQ(1, 1); // Stack [] +TEST(task4, normal1) { + std :: vector a {7, 32, 15, 0, 67, 1, 67, 90}; + std :: vector b {15, 0, 67, 1, 67, 90, 7, 32}; + a = move_array(a, a.size(), 6); + ASSERT_EQ(a, b); } + +TEST(task4, cycle1) { + std :: vector a {7, 32, 15, 0, 67, 1, 67, 90}; + std :: vector b {15, 0, 67, 1, 67, 90, 7, 32}; + a = move_array(a, a.size(), 6); + ASSERT_EQ(a, b); +} + +TEST(task4, cycle2) { + std :: vector a {7, 32, 15, 0, 67, 1, 67, 90}; + std :: vector b {15, 0, 67, 1, 67, 90, 7, 32}; + a = move_array(a, a.size(), 6); + ASSERT_EQ(a, b); +} + +TEST(task4, error) { + std :: vector a {0,1,2,3,4,5,6,7}; + ASSERT_THROW (move_array(a, 0, 13), array_error); +} + +TEST(task4, normal2) { + std :: vector a {5, 19, 4, 72, 85, 1, 4, 6}; + std :: vector b {1, 4, 6, 5, 19, 4, 72, 85}; + a = move_array(a, a.size(), 11); + ASSERT_EQ(a, b); +} + +TEST(task4, bellow_zero) { + std :: vector a {-1,3,5,10,-8}; + std :: vector b {10,-8,-1, 3,5}; + a = move_array(a, a.size(), 2); + ASSERT_EQ(a, b); +} + +TEST(task4, big_test1) { + std :: vector a {}; + for (int i{0}; i<100; ++i) + a.push_back(11); + std :: vector b = move_array(a, a.size(), 1); + ASSERT_EQ(b, a); +} + +TEST(task4, big_test2) { + std :: vector a {}; + for (int i{0}; i<10000; ++i) + a.push_back(11); + std :: vector b = move_array(a, a.size(), 100); + ASSERT_EQ(b, a); +} + +TEST(task4, big_test3) { + std :: vector a {}; + for (int i{0}; i<1000000; ++i) + a.push_back(11); + std :: vector b = move_array(a, a.size(), 1000); + ASSERT_EQ(b, a); +} + +TEST(task4, big_test4) { + std :: vector a {}; + for (int i{0}; i<10000000; ++i) + a.push_back(11); + std :: vector b = move_array(a, a.size(), 10000000); + ASSERT_EQ(b, a); +} + +TEST(task4, big_test_final) { + std :: vector a {}; + for (int i{0}; i<100000000; ++i) + a.push_back(11); + std :: vector b = move_array(a, a.size(), 1000000000); + ASSERT_EQ(b, a); +} \ No newline at end of file