Skip to content

Commit 49668c7

Browse files
committed
fix
1 parent 7827412 commit 49668c7

12 files changed

+186
-0
lines changed

task_02/CMakeLists.txt

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
cmake_minimum_required(VERSION 3.10)
2+
3+
get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_LIST_DIR} NAME)
4+
string(REPLACE " " "_" PROJECT_NAME ${PROJECT_NAME})
5+
project(${PROJECT_NAME} C CXX)
6+
7+
set(CMAKE_CXX_STANDARD 20)
8+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
9+
10+
file(GLOB_RECURSE source_list "src/*.cpp" "src/*.hpp")
11+
file(GLOB_RECURSE lib_source_list "../lib/src/*.cpp" "../lib/src/*.hpp")
12+
file(GLOB_RECURSE main_source_list "src/main.cpp")
13+
file(GLOB_RECURSE test_source_list "src/*.cpp")
14+
file(GLOB_RECURSE test_list "src/*test.cpp")
15+
16+
list(REMOVE_ITEM test_source_list ${main_source_list})
17+
list(REMOVE_ITEM source_list ${test_list})
18+
19+
include_directories(${PROJECT_NAME} PUBLIC src)
20+
include_directories(${PROJECT_NAME} PUBLIC ../lib/src)
21+
22+
add_executable(${PROJECT_NAME} ${source_list})
23+
target_link_libraries(${PROJECT_NAME} PUBLIC Utils)
24+
25+
# Locate GTest
26+
enable_testing()
27+
find_package(GTest REQUIRED)
28+
include_directories(${GTEST_INCLUDE_DIRS})
29+
30+
# Link runTests with what we want to test and the GTest and pthread library
31+
add_executable(${PROJECT_NAME}_tests ${test_source_list})
32+
target_link_libraries(
33+
${PROJECT_NAME}_tests
34+
GTest::gtest_main
35+
Utils
36+
)
37+
38+
include(GoogleTest)
39+
gtest_discover_tests(${PROJECT_NAME}_tests)

task_02/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Задача на стэк
2+
3+
В данной задаче необходимо реализовать один стэк и стэк с минимумом (нельзя использовать std::stack). Получение минимума должно работать за константное время

task_02/src/main.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#include <iostream>
2+
3+
int main() { return 0; }

task_02/src/stack.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#include "stack.hpp"
2+
3+
#include <algorithm>
4+
5+
void Stack::Push(int value) { data_.push(value); }
6+
7+
int Stack::Pop() {
8+
auto result = data_.top();
9+
data_.pop();
10+
return result;
11+
}
12+
13+
void MinStack::Push(int value) { data_.push_back(value); }
14+
15+
int MinStack::Pop() {
16+
auto result = data_.back();
17+
data_.pop_back();
18+
return result;
19+
}
20+
21+
int MinStack::GetMin() { return *std::min_element(data_.begin(), data_.end()); }

task_02/src/stack.hpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#pragma once
2+
3+
#include <stack>
4+
#include <vector>
5+
6+
class Stack {
7+
public:
8+
void Push(int value);
9+
int Pop();
10+
11+
private:
12+
std::stack<int> data_;
13+
};
14+
15+
class MinStack {
16+
public:
17+
void Push(int value);
18+
int Pop();
19+
int GetMin();
20+
21+
private:
22+
std::vector<int> data_;
23+
};

task_02/src/test.cpp

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
2+
#include <gtest/gtest.h>
3+
4+
#include <stack>
5+
6+
#include "stack.hpp"
7+
8+
TEST(StackTest, Simple) {
9+
Stack stack;
10+
stack.Push(1); // Stack [1]
11+
ASSERT_EQ(stack.Pop(), 1); // Stack []
12+
stack.Push(1); // Stack [1]
13+
stack.Push(2); // Stack [1, 2]
14+
ASSERT_EQ(stack.Pop(), 2); // Stack [1]
15+
ASSERT_EQ(stack.Pop(), 1); // Stack []
16+
stack.Push(1); // Stack [1]
17+
stack.Push(2); // Stack [1, 2]
18+
ASSERT_EQ(stack.Pop(), 2); // Stack [1]
19+
stack.Push(3); // Stack [1, 3]
20+
ASSERT_EQ(stack.Pop(), 3); // Stack [1]
21+
ASSERT_EQ(stack.Pop(), 1); // Stack []
22+
}
23+
24+
TEST(MinStackTest, Simple) {
25+
MinStack stack;
26+
stack.Push(1); // Stack [1]
27+
ASSERT_EQ(stack.GetMin(), 1);
28+
ASSERT_EQ(stack.Pop(), 1); // Stack []
29+
stack.Push(1); // Stack [1]
30+
stack.Push(2); // Stack [1, 2]
31+
ASSERT_EQ(stack.GetMin(), 1);
32+
ASSERT_EQ(stack.Pop(), 2); // Stack [1]
33+
ASSERT_EQ(stack.Pop(), 1); // Stack []
34+
stack.Push(1); // Stack [1]
35+
stack.Push(2); // Stack [1, 2]
36+
ASSERT_EQ(stack.GetMin(), 1);
37+
ASSERT_EQ(stack.Pop(), 2); // Stack [1]
38+
stack.Push(3); // Stack [1, 3]
39+
ASSERT_EQ(stack.GetMin(), 1);
40+
ASSERT_EQ(stack.Pop(), 3); // Stack [1]
41+
ASSERT_EQ(stack.Pop(), 1); // Stack []
42+
}

task_03/CMakeLists.txt

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
cmake_minimum_required(VERSION 3.10)
2+
3+
get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_LIST_DIR} NAME)
4+
string(REPLACE " " "_" PROJECT_NAME ${PROJECT_NAME})
5+
project(${PROJECT_NAME} C CXX)
6+
7+
set(CMAKE_CXX_STANDARD 20)
8+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
9+
10+
file(GLOB_RECURSE source_list "src/*.cpp" "src/*.hpp")
11+
file(GLOB_RECURSE lib_source_list "../lib/src/*.cpp" "../lib/src/*.hpp")
12+
file(GLOB_RECURSE main_source_list "src/main.cpp")
13+
file(GLOB_RECURSE test_source_list "src/*.cpp")
14+
file(GLOB_RECURSE test_list "src/*test.cpp")
15+
16+
list(REMOVE_ITEM test_source_list ${main_source_list})
17+
list(REMOVE_ITEM source_list ${test_list})
18+
19+
include_directories(${PROJECT_NAME} PUBLIC src)
20+
include_directories(${PROJECT_NAME} PUBLIC ../lib/src)
21+
22+
add_executable(${PROJECT_NAME} ${source_list})
23+
target_link_libraries(${PROJECT_NAME} PUBLIC Utils)
24+
25+
# Locate GTest
26+
enable_testing()
27+
find_package(GTest REQUIRED)
28+
include_directories(${GTEST_INCLUDE_DIRS})
29+
30+
# Link runTests with what we want to test and the GTest and pthread library
31+
add_executable(${PROJECT_NAME}_tests ${test_source_list})
32+
target_link_libraries(
33+
${PROJECT_NAME}_tests
34+
GTest::gtest_main
35+
Utils
36+
)
37+
38+
include(GoogleTest)
39+
gtest_discover_tests(${PROJECT_NAME}_tests)

task_03/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Задача на количество дней перед потеплением
2+
3+
Написать функцию в которую передается темепература за каждый день в определенный момент день, нужно вернуть количество дней до повышения температуры для каждого дня, если температура не повысится, то для этого дня поставить в результирующий массив 0.

task_03/src/main.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#include <iostream>
2+
3+
int main() { return 0; }

task_03/src/test.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
2+
#include <gtest/gtest.h>
3+
4+
#include "topology_sort.hpp"
5+
6+
TEST(TopologySort, Simple) {
7+
ASSERT_EQ(1, 1); // Stack []
8+
}

task_03/src/topology_sort.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#include "topology_sort.hpp"

task_03/src/topology_sort.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#pragma once

0 commit comments

Comments
 (0)