From 5851423bd4836f981b186c9cd5f9b637f9c4fd4f Mon Sep 17 00:00:00 2001 From: ilya-krivtsov <180809461+ilya-krivtsov@users.noreply.github.com> Date: Sat, 19 Oct 2024 00:35:21 +0300 Subject: [PATCH 01/11] Homework 5 - Added stack --- CMakeLists.txt | 2 + homework_5/CMakeLists.txt | 5 ++ homework_5/stack/CMakeLists.txt | 6 ++ homework_5/stack/stack.c | 84 ++++++++++++++++++ homework_5/stack/stack.h | 38 +++++++++ homework_5/stack/test.c | 147 ++++++++++++++++++++++++++++++++ 6 files changed, 282 insertions(+) create mode 100644 homework_5/CMakeLists.txt create mode 100644 homework_5/stack/CMakeLists.txt create mode 100644 homework_5/stack/stack.c create mode 100644 homework_5/stack/stack.h create mode 100644 homework_5/stack/test.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 9e2e18b..016cf4f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,3 +3,5 @@ project(homework LANGUAGES C) set(CMAKE_C_STANDARD 23) set(CMAKE_C_STANDARD_REQUIRED TRUE) + +add_subdirectory(homework_5) diff --git a/homework_5/CMakeLists.txt b/homework_5/CMakeLists.txt new file mode 100644 index 0000000..dc70726 --- /dev/null +++ b/homework_5/CMakeLists.txt @@ -0,0 +1,5 @@ +project(homework_5) + +set(homeworkName "${PROJECT_NAME}") + +add_subdirectory(stack) diff --git a/homework_5/stack/CMakeLists.txt b/homework_5/stack/CMakeLists.txt new file mode 100644 index 0000000..40e8eb0 --- /dev/null +++ b/homework_5/stack/CMakeLists.txt @@ -0,0 +1,6 @@ +project("${homeworkName}_stack") + +add_library(stack stack.c) + +add_executable(${PROJECT_NAME}_test test.c) +target_link_libraries(${PROJECT_NAME}_test PRIVATE stack) diff --git a/homework_5/stack/stack.c b/homework_5/stack/stack.c new file mode 100644 index 0000000..1c8f40f --- /dev/null +++ b/homework_5/stack/stack.c @@ -0,0 +1,84 @@ +#include "stack.h" + +#include +#include +#include + +typedef struct Node { + uint64_t value; + struct Node *previous; +} Node; + +typedef struct Stack { + Node *head; +} Stack; + +static void removeLastNode(Stack *stack) { + Node *prev = stack->head; + stack->head = stack->head->previous; + free(prev); +} + +bool stackCreate(Stack **stack) { + *stack = malloc(sizeof(Stack)); + if (*stack == NULL) { + return false; + } + + (*stack)->head = NULL; + + return true; +} + +bool stackPush(Stack *stack, uint64_t value) { + Node *node = malloc(sizeof(Node)); + if (node == NULL) { + return false; + } + + if (stackIsEmpty(stack)) { + node->previous = NULL; + } else { + node->previous = stack->head; + } + + node->value = value; + stack->head = node; + + return true; +} + + +bool stackTryPop(Stack *stack, uint64_t *value) { + if (stackIsEmpty(stack)) { + return false; + } + + *value = stack->head->value; + + removeLastNode(stack); + + return true; +} + +bool stackTryPeek(Stack *stack, uint64_t *value) { + if (stackIsEmpty(stack)) { + return false; + } + + *value = stack->head->value; + + return true; +} + +bool stackIsEmpty(Stack *stack) { + return stack->head == NULL; +} + +void stackDispose(Stack *stack) { + while (!stackIsEmpty(stack)) { + removeLastNode(stack); + } + + free(stack); +} diff --git a/homework_5/stack/stack.h b/homework_5/stack/stack.h new file mode 100644 index 0000000..a76f82b --- /dev/null +++ b/homework_5/stack/stack.h @@ -0,0 +1,38 @@ +#pragma once + +#include +#include + +/// @brief Stack that stores all of its elements as `uint64_t` +typedef struct Stack Stack; + +/// @brief Creates `Stack` +/// @param stack Pointer to store created `Stack` to +/// @return `true` if successful, `false` otherwise (allocation failed) +bool stackCreate(Stack **stack); + +/// @brief Pushes value on top of the stack +/// @param stack Pointer to `Stack` instance +/// @return `true` if successful, `false` otherwise (allocation failed) +bool stackPush(Stack *stack, uint64_t value); + +/// @brief Pops value from the top of the stack +/// @param stack Pointer to `Stack` instance +/// @param value Pointer to write value to +/// @return `true` if stack was non-empty, `false` otherwise +bool stackTryPop(Stack *stack, uint64_t *value); + +/// @brief Returns value from the top of the stack without removing it +/// @param stack Pointer to `Stack` instance +/// @param value Pointer to write value to +/// @return `true` if stack was non-empty, `false` otherwise +bool stackTryPeek(Stack *stack, uint64_t *value); + +/// @brief Checks if stack is empty +/// @param stack Pointer to `Stack` instance +/// @return `true` if stack is empty, `false` otherwise +bool stackIsEmpty(Stack *stack); + +/// @brief Disposes stack and all of its elements +/// @param stack `Stack` to dispose +void stackDispose(Stack *stack); diff --git a/homework_5/stack/test.c b/homework_5/stack/test.c new file mode 100644 index 0000000..146c9b3 --- /dev/null +++ b/homework_5/stack/test.c @@ -0,0 +1,147 @@ +#define CTEST_MAIN +#define CTEST_SEGFAULT +#include "../../ctest/ctest.h" + +#include + +#include "stack.h" + +int main(int argc, const char *argv[]) { + return ctest_main(argc, argv); +} + +#pragma region Helpers + +Stack *createStack(void) { + Stack *stack; + ASSERT_TRUE(stackCreate(&stack)); + ASSERT_NOT_NULL(stack); + + return stack; +} + +void assertPop(Stack *stack, uint64_t value) { + uint64_t top = 0; + ASSERT_TRUE(stackTryPop(stack, &top)); + ASSERT_EQUAL_U(value, top); +} + +void assertPeek(Stack *stack, uint64_t value) { + uint64_t top = 0; + ASSERT_TRUE(stackTryPeek(stack, &top)); + ASSERT_EQUAL_U(value, top); +} + +#pragma endregion + +CTEST(stackTests, createTest) { + Stack *stack = createStack(); + ASSERT_TRUE(stackIsEmpty(stack)); + free(stack); +} + +#pragma region Push & Pop + +CTEST(stackTests, pushPopTestA) { + Stack *stack = createStack(); + + ASSERT_TRUE(stackPush(stack, 0)); + assertPop(stack, 0); + + ASSERT_TRUE(stackIsEmpty(stack)); + + free(stack); +} + +CTEST(stackTests, pushPopTestB) { + Stack *stack = createStack(); + + ASSERT_TRUE(stackPush(stack, 0)); + assertPop(stack, 0); + ASSERT_TRUE(stackIsEmpty(stack)); + + ASSERT_TRUE(stackPush(stack, 47)); + assertPop(stack, 47); + ASSERT_TRUE(stackIsEmpty(stack)); + + ASSERT_TRUE(stackPush(stack, 1245)); + ASSERT_TRUE(stackPush(stack, 44362)); + assertPop(stack, 44362); + assertPop(stack, 1245); + ASSERT_TRUE(stackIsEmpty(stack)); + + free(stack); +} + +CTEST(stackTests, pushPopTestC) { + Stack *stack = createStack(); + + ASSERT_TRUE(stackPush(stack, 2352)); + ASSERT_TRUE(stackPush(stack, 43634)); + assertPop(stack, 43634); + ASSERT_FALSE(stackIsEmpty(stack)); + + ASSERT_TRUE(stackPush(stack, 9999)); + ASSERT_TRUE(stackPush(stack, 7777777)); + assertPop(stack, 7777777); + assertPop(stack, 9999); + assertPop(stack, 2352); + ASSERT_TRUE(stackIsEmpty(stack)); + + free(stack); +} + +#pragma endregion + +#pragma region Push & Peek + +CTEST(stackTests, pushPeekTestA) { + Stack *stack = createStack(); + + ASSERT_TRUE(stackPush(stack, 0)); + assertPeek(stack, 0); + + ASSERT_FALSE(stackIsEmpty(stack)); + + free(stack); +} + +CTEST(stackTests, pushPeekTestB) { + Stack *stack = createStack(); + + ASSERT_TRUE(stackPush(stack, 0)); + assertPeek(stack, 0); + ASSERT_FALSE(stackIsEmpty(stack)); + + ASSERT_TRUE(stackPush(stack, 47)); + assertPeek(stack, 47); + ASSERT_FALSE(stackIsEmpty(stack)); + + ASSERT_TRUE(stackPush(stack, 1245)); + ASSERT_TRUE(stackPush(stack, 44362)); + assertPeek(stack, 44362); + assertPeek(stack, 44362); + ASSERT_FALSE(stackIsEmpty(stack)); + + free(stack); +} + +CTEST(stackTests, pushPeekTestC) { + Stack *stack = createStack(); + + ASSERT_TRUE(stackPush(stack, 2352)); + ASSERT_TRUE(stackPush(stack, 43634)); + assertPeek(stack, 43634); + ASSERT_FALSE(stackIsEmpty(stack)); + + ASSERT_TRUE(stackPush(stack, 9999)); + ASSERT_TRUE(stackPush(stack, 7777777)); + assertPeek(stack, 7777777); + assertPeek(stack, 7777777); + assertPeek(stack, 7777777); + ASSERT_FALSE(stackIsEmpty(stack)); + + free(stack); +} + +#pragma endregion From 7d6d6c39cbde9583fcbfae37b63e9d071f47bd53 Mon Sep 17 00:00:00 2001 From: ilya-krivtsov <180809461+ilya-krivtsov@users.noreply.github.com> Date: Sat, 19 Oct 2024 01:54:25 +0300 Subject: [PATCH 02/11] Homework 5 task 1 --- homework_5/CMakeLists.txt | 2 ++ homework_5/task_1/CMakeLists.txt | 11 ++++++ homework_5/task_1/bracketsBalance.c | 41 ++++++++++++++++++++++ homework_5/task_1/bracketsBalance.h | 13 +++++++ homework_5/task_1/main.c | 28 +++++++++++++++ homework_5/task_1/test.c | 53 +++++++++++++++++++++++++++++ 6 files changed, 148 insertions(+) create mode 100644 homework_5/task_1/CMakeLists.txt create mode 100644 homework_5/task_1/bracketsBalance.c create mode 100644 homework_5/task_1/bracketsBalance.h create mode 100644 homework_5/task_1/main.c create mode 100644 homework_5/task_1/test.c diff --git a/homework_5/CMakeLists.txt b/homework_5/CMakeLists.txt index dc70726..170e71d 100644 --- a/homework_5/CMakeLists.txt +++ b/homework_5/CMakeLists.txt @@ -3,3 +3,5 @@ project(homework_5) set(homeworkName "${PROJECT_NAME}") add_subdirectory(stack) + +add_subdirectory(task_1) diff --git a/homework_5/task_1/CMakeLists.txt b/homework_5/task_1/CMakeLists.txt new file mode 100644 index 0000000..bcab224 --- /dev/null +++ b/homework_5/task_1/CMakeLists.txt @@ -0,0 +1,11 @@ +project("${homeworkName}_task_1") + +add_library(bracketsBalance bracketsBalance.c) + +add_executable(${PROJECT_NAME} main.c) +target_link_libraries(${PROJECT_NAME} bracketsBalance) +target_link_libraries(${PROJECT_NAME} stack) + +add_executable(${PROJECT_NAME}_test test.c) +target_link_libraries(${PROJECT_NAME}_test bracketsBalance) +target_link_libraries(${PROJECT_NAME}_test stack) diff --git a/homework_5/task_1/bracketsBalance.c b/homework_5/task_1/bracketsBalance.c new file mode 100644 index 0000000..afa9225 --- /dev/null +++ b/homework_5/task_1/bracketsBalance.c @@ -0,0 +1,41 @@ +#include "bracketsBalance.h" + +#include "../stack/stack.h" + +BalanceResult checkIfBracketsBalanced(const char *string) { + Stack *stack = NULL; + if (!stackCreate(&stack)) { + return ALLOCATION_FAILED; + } + + bool checkedAll = true; + + for (int i = 0; string[i] != '\0'; ++i) { + char chr = string[i]; + + if (chr == '(' || chr == '[' || chr == '{') { + stackPush(stack, chr); + } else if (chr == ')' || chr == ']' || chr == '}') { + uint64_t value = -1; + if (!stackTryPop(stack, &value)) { + checkedAll = false; + break; + } + + char popped = (char)value; + + if ((popped == '(' && chr != ')') || + (popped == '[' && chr != ']') || + (popped == '{' && chr != '}')) { + checkedAll = false; + break; + } + } + } + + BalanceResult result = checkedAll && stackIsEmpty(stack) ? BALANCED : UNBALANCED; + + stackDispose(stack); + + return result; +} diff --git a/homework_5/task_1/bracketsBalance.h b/homework_5/task_1/bracketsBalance.h new file mode 100644 index 0000000..39ef4eb --- /dev/null +++ b/homework_5/task_1/bracketsBalance.h @@ -0,0 +1,13 @@ +#pragma once + +typedef enum { + BALANCED, + UNBALANCED, + ALLOCATION_FAILED +} BalanceResult; + +/// @brief Checks if brackets are balanced in given string, all other characters are ignored +/// @param string String to be checked +/// @return `BALANCED` if brackets are balanced, `UNBALANCED` otherwise, +/// `ALLOCATION_FAILED` if allocation failed +BalanceResult checkIfBracketsBalanced(const char *string); diff --git a/homework_5/task_1/main.c b/homework_5/task_1/main.c new file mode 100644 index 0000000..cc6ba2d --- /dev/null +++ b/homework_5/task_1/main.c @@ -0,0 +1,28 @@ +#include + +#include "bracketsBalance.h" + +int main(void) { + printf("input string: "); + char buffer[1024] = { 0 }; + + if (scanf("%1023s") != 1) { + printf("reading string failed\n"); + return 1; + } + + switch (checkIfBracketsBalanced(buffer)) + { + case BALANCED: + printf("brackets are balanced\n"); + break; + + case UNBALANCED: + printf("brackets are unbalanced\n"); + break; + + case ALLOCATION_FAILED: + printf("allocation failed\n"); + return 1; + } +} diff --git a/homework_5/task_1/test.c b/homework_5/task_1/test.c new file mode 100644 index 0000000..1ea947a --- /dev/null +++ b/homework_5/task_1/test.c @@ -0,0 +1,53 @@ +#define CTEST_MAIN +#define CTEST_SEGFAULT +#include "../../ctest/ctest.h" + +#include "bracketsBalance.h" + +int main(int argc, const char *argv[]) { + return ctest_main(argc, argv); +} + +CTEST(bracketsBalanceTest, emptyStringTest) { + ASSERT_EQUAL(checkIfBracketsBalanced(""), BALANCED); +} + +CTEST(bracketsBalanceTest, randomCharactersTest) { + ASSERT_EQUAL(checkIfBracketsBalanced("sdfhJGGjGJHJhgJhgjhgFygYIOTyF:bKFyGFTKYtygGhggFYTfhkuasbvV2346T362T7*$&^I^&26234R623"), BALANCED); +} + +CTEST(bracketsBalanceTest, singleOpeningBracketTest) { + ASSERT_EQUAL(checkIfBracketsBalanced("("), UNBALANCED); + ASSERT_EQUAL(checkIfBracketsBalanced("["), UNBALANCED); + ASSERT_EQUAL(checkIfBracketsBalanced("{"), UNBALANCED); +} + +CTEST(bracketsBalanceTest, singleClosingBracketTest) { + ASSERT_EQUAL(checkIfBracketsBalanced(")"), UNBALANCED); + ASSERT_EQUAL(checkIfBracketsBalanced("]"), UNBALANCED); + ASSERT_EQUAL(checkIfBracketsBalanced("}"), UNBALANCED); +} + +CTEST(bracketsBalanceTest, singlePairTest) { + ASSERT_EQUAL(checkIfBracketsBalanced("()"), BALANCED); + ASSERT_EQUAL(checkIfBracketsBalanced("[]"), BALANCED); + ASSERT_EQUAL(checkIfBracketsBalanced("{}"), BALANCED); +} + +CTEST(bracketsBalanceTest, nonNestedPairsTest) { + ASSERT_EQUAL(checkIfBracketsBalanced("()[]{}{}"), BALANCED); + ASSERT_EQUAL(checkIfBracketsBalanced("[](){}[][][]"), BALANCED); + ASSERT_EQUAL(checkIfBracketsBalanced("{}[]()(){}[]"), BALANCED); +} + +CTEST(bracketsBalanceTest, nestedPairsTest) { + ASSERT_EQUAL(checkIfBracketsBalanced("({[]})"), BALANCED); + ASSERT_EQUAL(checkIfBracketsBalanced("{{{}}}[[[]]]((()))"), BALANCED); + ASSERT_EQUAL(checkIfBracketsBalanced("{()[({}()[]){[]}()({})]}"), BALANCED); +} + +CTEST(bracketsBalanceTest, unbalancedTest) { + ASSERT_EQUAL(checkIfBracketsBalanced("{({)}}"), UNBALANCED); + ASSERT_EQUAL(checkIfBracketsBalanced("(((((([))))))]"), UNBALANCED); + ASSERT_EQUAL(checkIfBracketsBalanced("(({}(({}(([))){})))]"), UNBALANCED); +} From 8147ea2e6379589010dc341f3c2684a54df216ec Mon Sep 17 00:00:00 2001 From: ilya-krivtsov <180809461+ilya-krivtsov@users.noreply.github.com> Date: Sat, 19 Oct 2024 02:03:09 +0300 Subject: [PATCH 03/11] Added stdlib include --- homework_5/task_1/bracketsBalance.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/homework_5/task_1/bracketsBalance.c b/homework_5/task_1/bracketsBalance.c index afa9225..92adf54 100644 --- a/homework_5/task_1/bracketsBalance.c +++ b/homework_5/task_1/bracketsBalance.c @@ -1,5 +1,7 @@ #include "bracketsBalance.h" +#include + #include "../stack/stack.h" BalanceResult checkIfBracketsBalanced(const char *string) { From 86cb5fd446ec19f00b0130a12e2960549bdb08b4 Mon Sep 17 00:00:00 2001 From: ilya-krivtsov <180809461+ilya-krivtsov@users.noreply.github.com> Date: Mon, 21 Oct 2024 17:03:23 +0300 Subject: [PATCH 04/11] Removed trailing space --- homework_5/stack/stack.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/homework_5/stack/stack.h b/homework_5/stack/stack.h index a76f82b..dc6cdb9 100644 --- a/homework_5/stack/stack.h +++ b/homework_5/stack/stack.h @@ -17,14 +17,14 @@ bool stackCreate(Stack **stack); bool stackPush(Stack *stack, uint64_t value); /// @brief Pops value from the top of the stack -/// @param stack Pointer to `Stack` instance -/// @param value Pointer to write value to +/// @param stack Pointer to `Stack` instance +/// @param value Pointer to write value to /// @return `true` if stack was non-empty, `false` otherwise bool stackTryPop(Stack *stack, uint64_t *value); /// @brief Returns value from the top of the stack without removing it /// @param stack Pointer to `Stack` instance -/// @param value Pointer to write value to +/// @param value Pointer to write value to /// @return `true` if stack was non-empty, `false` otherwise bool stackTryPeek(Stack *stack, uint64_t *value); From 5d2768f0e96bff518dd56747dab04afdaadcfb97 Mon Sep 17 00:00:00 2001 From: ilya-krivtsov <180809461+ilya-krivtsov@users.noreply.github.com> Date: Mon, 21 Oct 2024 17:32:28 +0300 Subject: [PATCH 05/11] Removed another trailing space --- homework_5/stack/stack.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homework_5/stack/stack.h b/homework_5/stack/stack.h index dc6cdb9..2aafdaa 100644 --- a/homework_5/stack/stack.h +++ b/homework_5/stack/stack.h @@ -34,5 +34,5 @@ bool stackTryPeek(Stack *stack, uint64_t *value); bool stackIsEmpty(Stack *stack); /// @brief Disposes stack and all of its elements -/// @param stack `Stack` to dispose +/// @param stack `Stack` to dispose void stackDispose(Stack *stack); From ada080b239f2eefe4da2ad6ca39649192c35c22f Mon Sep 17 00:00:00 2001 From: ilya-krivtsov <180809461+ilya-krivtsov@users.noreply.github.com> Date: Tue, 22 Oct 2024 23:04:11 +0300 Subject: [PATCH 06/11] Dispose stack properly --- homework_5/stack/test.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/homework_5/stack/test.c b/homework_5/stack/test.c index 146c9b3..e8cca3f 100644 --- a/homework_5/stack/test.c +++ b/homework_5/stack/test.c @@ -37,7 +37,7 @@ void assertPeek(Stack *stack, uint64_t value) { CTEST(stackTests, createTest) { Stack *stack = createStack(); ASSERT_TRUE(stackIsEmpty(stack)); - free(stack); + stackDispose(stack); } #pragma region Push & Pop @@ -50,7 +50,7 @@ CTEST(stackTests, pushPopTestA) { ASSERT_TRUE(stackIsEmpty(stack)); - free(stack); + stackDispose(stack); } CTEST(stackTests, pushPopTestB) { @@ -70,7 +70,7 @@ CTEST(stackTests, pushPopTestB) { assertPop(stack, 1245); ASSERT_TRUE(stackIsEmpty(stack)); - free(stack); + stackDispose(stack); } CTEST(stackTests, pushPopTestC) { @@ -88,7 +88,7 @@ CTEST(stackTests, pushPopTestC) { assertPop(stack, 2352); ASSERT_TRUE(stackIsEmpty(stack)); - free(stack); + stackDispose(stack); } #pragma endregion @@ -103,7 +103,7 @@ CTEST(stackTests, pushPeekTestA) { ASSERT_FALSE(stackIsEmpty(stack)); - free(stack); + stackDispose(stack); } CTEST(stackTests, pushPeekTestB) { @@ -123,7 +123,7 @@ CTEST(stackTests, pushPeekTestB) { assertPeek(stack, 44362); ASSERT_FALSE(stackIsEmpty(stack)); - free(stack); + stackDispose(stack); } CTEST(stackTests, pushPeekTestC) { @@ -141,7 +141,7 @@ CTEST(stackTests, pushPeekTestC) { assertPeek(stack, 7777777); ASSERT_FALSE(stackIsEmpty(stack)); - free(stack); + stackDispose(stack); } #pragma endregion From 6a8ac657a1bd549dba705230041ed347743404f2 Mon Sep 17 00:00:00 2001 From: ilya-krivtsov <180809461+ilya-krivtsov@users.noreply.github.com> Date: Fri, 29 Nov 2024 14:35:07 +0300 Subject: [PATCH 07/11] Pass buffer as parameter to scanf (hw5 task 1) --- homework_5/task_1/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homework_5/task_1/main.c b/homework_5/task_1/main.c index cc6ba2d..1762764 100644 --- a/homework_5/task_1/main.c +++ b/homework_5/task_1/main.c @@ -6,7 +6,7 @@ int main(void) { printf("input string: "); char buffer[1024] = { 0 }; - if (scanf("%1023s") != 1) { + if (scanf("%1023s", buffer) != 1) { printf("reading string failed\n"); return 1; } From ee01c84e6a7477f180061fab6c98e2429dc06d0a Mon Sep 17 00:00:00 2001 From: ilya-krivtsov <180809461+ilya-krivtsov@users.noreply.github.com> Date: Tue, 10 Dec 2024 03:14:00 +0300 Subject: [PATCH 08/11] Removed 'PRIVATE' dependency modifier (hw5 - stack) --- homework_5/stack/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homework_5/stack/CMakeLists.txt b/homework_5/stack/CMakeLists.txt index 40e8eb0..0589179 100644 --- a/homework_5/stack/CMakeLists.txt +++ b/homework_5/stack/CMakeLists.txt @@ -3,4 +3,4 @@ project("${homeworkName}_stack") add_library(stack stack.c) add_executable(${PROJECT_NAME}_test test.c) -target_link_libraries(${PROJECT_NAME}_test PRIVATE stack) +target_link_libraries(${PROJECT_NAME}_test stack) From 703b7f27b344c86a4966739665a3db6aa12a10dc Mon Sep 17 00:00:00 2001 From: ilya-krivtsov <180809461+ilya-krivtsov@users.noreply.github.com> Date: Tue, 10 Dec 2024 03:15:18 +0300 Subject: [PATCH 09/11] Added stdbool.h include (hw5 task 1) --- homework_5/task_1/bracketsBalance.c | 1 + 1 file changed, 1 insertion(+) diff --git a/homework_5/task_1/bracketsBalance.c b/homework_5/task_1/bracketsBalance.c index 92adf54..8e56a06 100644 --- a/homework_5/task_1/bracketsBalance.c +++ b/homework_5/task_1/bracketsBalance.c @@ -1,5 +1,6 @@ #include "bracketsBalance.h" +#include #include #include "../stack/stack.h" From ae2d49b6dfef3c4e84590f3679133039b2882059 Mon Sep 17 00:00:00 2001 From: ilya-krivtsov <180809461+ilya-krivtsov@users.noreply.github.com> Date: Sun, 22 Dec 2024 22:20:29 +0300 Subject: [PATCH 10/11] Added README (hw 5) --- homework_5/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 homework_5/README.md diff --git a/homework_5/README.md b/homework_5/README.md new file mode 100644 index 0000000..c6918c2 --- /dev/null +++ b/homework_5/README.md @@ -0,0 +1 @@ +# Homework 5 From cf073ecbf32642a5afb638655121ad73d968a123 Mon Sep 17 00:00:00 2001 From: ilya-krivtsov <180809461+ilya-krivtsov@users.noreply.github.com> Date: Sun, 22 Dec 2024 22:21:53 +0300 Subject: [PATCH 11/11] Added task name to README (hw5 task 1) --- homework_5/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/homework_5/README.md b/homework_5/README.md index c6918c2..72e66a9 100644 --- a/homework_5/README.md +++ b/homework_5/README.md @@ -1 +1,3 @@ # Homework 5 + +[Task 1. Advanced brackets balance](/homework_5/task_1)