From e43c97e4d667a2006aa384b35f1c79dc467e90d8 Mon Sep 17 00:00:00 2001 From: stuffacc Date: Wed, 15 Oct 2025 17:30:50 +0300 Subject: [PATCH 1/6] Stack 1.0 --- 5/stack.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 5/stack.h | 18 ++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 5/stack.c create mode 100644 5/stack.h diff --git a/5/stack.c b/5/stack.c new file mode 100644 index 0000000..eaae60e --- /dev/null +++ b/5/stack.c @@ -0,0 +1,46 @@ +#include "stack.h" + + +void init(Stack* stack) { + (*stack).top = NULL; + (*stack).size = 0; +} + +void push(Stack* stack, char value) { + Node* new_node = malloc(sizeof(Node)); + + (*new_node).value = value; + (*new_node).next = (*stack).top; + + (*stack).top = new_node; + (*stack).size++; +} + + + +Node* pop(Stack* stack) { + if ((*stack).top == NULL) { + return NULL; + } + + Node* out = (*stack).top; + (*stack).top = (*out).next; + + (*stack).size--; + + return out; +} + +void printStack(Stack* stack) { + if ((*stack).size == 0) { + printf("\n"); + return; + } + Node* current = (*stack).top; + do { + printf("%c ", (*current).value); + current = (*current).next; + } + while (current != NULL); + printf("\n"); +} diff --git a/5/stack.h b/5/stack.h new file mode 100644 index 0000000..b2d5857 --- /dev/null +++ b/5/stack.h @@ -0,0 +1,18 @@ +#include +#include + +typedef struct Node { + char value; + struct Node* next; +} Node; + +typedef struct Stack { + Node* top; + int size; +} Stack; + + +void init(Stack* stack); +void push(Stack* stack, char value); +Node* pop(Stack* stack); +void printStack(Stack* stack); From a081be5b874c0d3d1003c5ea013152a9a8a97f2a Mon Sep 17 00:00:00 2001 From: stuffacc Date: Wed, 15 Oct 2025 17:35:58 +0300 Subject: [PATCH 2/6] Advance balance --- 5/advanced_balance.c | 70 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 5/advanced_balance.c diff --git a/5/advanced_balance.c b/5/advanced_balance.c new file mode 100644 index 0000000..b77fd5c --- /dev/null +++ b/5/advanced_balance.c @@ -0,0 +1,70 @@ +#include "stack.h" + +void main() { + char string[200] = {' '}; + + fgets(string, sizeof(string), stdin); + Stack stack; + init(&stack); + + int res = 1; + + for (int i = 0; i < 200; i++) { + if (string[i] == '\n') { + break; + } + else if ((string[i] == '(') || (string[i] == '[') || (string[i] == '{')) { + push(&stack, string[i]); + } + + else if (string[i] == ')') { + Node* pope = pop(&stack); + if (pope == NULL) { + res = 0; + break; + } + char popChar = (*pope).value; + if (popChar != '(') { + free(pope); + res = 0; + break; + } + } + + else if (string[i] == ']') { + Node* pope = pop(&stack); + if (pope == NULL) { + res = 0; + break; + } + char popChar = (*pope).value; + if (popChar != '[') { + free(pope); + res = 0; + break; + } + } + + else if (string[i] == '}') { + Node* pope = pop(&stack); + if (pope == NULL) { + res = 0; + break; + } + char popChar = (*pope).value; + if (popChar != '{') { + free(pope); + res = 0; + break; + } + } + } + + if (res == 0 || stack.size != 0) { + printf("Баланса нет\n"); + } + else { + printf("Баланс есть\n"); + } +} + From c6c8f4d18c59b821576e16b18c70866af2e31657 Mon Sep 17 00:00:00 2001 From: stuffacc Date: Sun, 16 Nov 2025 15:53:01 +0300 Subject: [PATCH 3/6] Cmake Advance Balance --- 5/advancedBalance/CMakeLists.txt | 13 ++++++ 5/advancedBalance/advanced_balance.c | 70 ++++++++++++++++++++++++++++ 5/advancedBalance/stack.c | 46 ++++++++++++++++++ 5/advancedBalance/stack.h | 18 +++++++ 4 files changed, 147 insertions(+) create mode 100644 5/advancedBalance/CMakeLists.txt create mode 100644 5/advancedBalance/advanced_balance.c create mode 100644 5/advancedBalance/stack.c create mode 100644 5/advancedBalance/stack.h diff --git a/5/advancedBalance/CMakeLists.txt b/5/advancedBalance/CMakeLists.txt new file mode 100644 index 0000000..aeedfff --- /dev/null +++ b/5/advancedBalance/CMakeLists.txt @@ -0,0 +1,13 @@ +# Устанавливаем минимальную версию CMake +cmake_minimum_required(VERSION 3.25) +# Указываем название проекта и используемый язык(и) +project(AdvancedBalance C) + +# Перечисляем библиотеки +add_library(Stack stack.c) + +# Указываем исполняемый файл +add_executable(AdvancedBalance advanced_balance.c) +# Связываемся с библиотеками +target_link_libraries(AdvancedBalance PRIVATE Stack) + diff --git a/5/advancedBalance/advanced_balance.c b/5/advancedBalance/advanced_balance.c new file mode 100644 index 0000000..b77fd5c --- /dev/null +++ b/5/advancedBalance/advanced_balance.c @@ -0,0 +1,70 @@ +#include "stack.h" + +void main() { + char string[200] = {' '}; + + fgets(string, sizeof(string), stdin); + Stack stack; + init(&stack); + + int res = 1; + + for (int i = 0; i < 200; i++) { + if (string[i] == '\n') { + break; + } + else if ((string[i] == '(') || (string[i] == '[') || (string[i] == '{')) { + push(&stack, string[i]); + } + + else if (string[i] == ')') { + Node* pope = pop(&stack); + if (pope == NULL) { + res = 0; + break; + } + char popChar = (*pope).value; + if (popChar != '(') { + free(pope); + res = 0; + break; + } + } + + else if (string[i] == ']') { + Node* pope = pop(&stack); + if (pope == NULL) { + res = 0; + break; + } + char popChar = (*pope).value; + if (popChar != '[') { + free(pope); + res = 0; + break; + } + } + + else if (string[i] == '}') { + Node* pope = pop(&stack); + if (pope == NULL) { + res = 0; + break; + } + char popChar = (*pope).value; + if (popChar != '{') { + free(pope); + res = 0; + break; + } + } + } + + if (res == 0 || stack.size != 0) { + printf("Баланса нет\n"); + } + else { + printf("Баланс есть\n"); + } +} + diff --git a/5/advancedBalance/stack.c b/5/advancedBalance/stack.c new file mode 100644 index 0000000..eaae60e --- /dev/null +++ b/5/advancedBalance/stack.c @@ -0,0 +1,46 @@ +#include "stack.h" + + +void init(Stack* stack) { + (*stack).top = NULL; + (*stack).size = 0; +} + +void push(Stack* stack, char value) { + Node* new_node = malloc(sizeof(Node)); + + (*new_node).value = value; + (*new_node).next = (*stack).top; + + (*stack).top = new_node; + (*stack).size++; +} + + + +Node* pop(Stack* stack) { + if ((*stack).top == NULL) { + return NULL; + } + + Node* out = (*stack).top; + (*stack).top = (*out).next; + + (*stack).size--; + + return out; +} + +void printStack(Stack* stack) { + if ((*stack).size == 0) { + printf("\n"); + return; + } + Node* current = (*stack).top; + do { + printf("%c ", (*current).value); + current = (*current).next; + } + while (current != NULL); + printf("\n"); +} diff --git a/5/advancedBalance/stack.h b/5/advancedBalance/stack.h new file mode 100644 index 0000000..b2d5857 --- /dev/null +++ b/5/advancedBalance/stack.h @@ -0,0 +1,18 @@ +#include +#include + +typedef struct Node { + char value; + struct Node* next; +} Node; + +typedef struct Stack { + Node* top; + int size; +} Stack; + + +void init(Stack* stack); +void push(Stack* stack, char value); +Node* pop(Stack* stack); +void printStack(Stack* stack); From 08acbfb4c8b9c7587b95116b473a96a895b3e23b Mon Sep 17 00:00:00 2001 From: stuffacc Date: Sun, 16 Nov 2025 15:55:34 +0300 Subject: [PATCH 4/6] Moved --- 5/advanced_balance.c | 70 -------------------------------------------- 5/stack.c | 46 ----------------------------- 5/stack.h | 18 ------------ 3 files changed, 134 deletions(-) delete mode 100644 5/advanced_balance.c delete mode 100644 5/stack.c delete mode 100644 5/stack.h diff --git a/5/advanced_balance.c b/5/advanced_balance.c deleted file mode 100644 index b77fd5c..0000000 --- a/5/advanced_balance.c +++ /dev/null @@ -1,70 +0,0 @@ -#include "stack.h" - -void main() { - char string[200] = {' '}; - - fgets(string, sizeof(string), stdin); - Stack stack; - init(&stack); - - int res = 1; - - for (int i = 0; i < 200; i++) { - if (string[i] == '\n') { - break; - } - else if ((string[i] == '(') || (string[i] == '[') || (string[i] == '{')) { - push(&stack, string[i]); - } - - else if (string[i] == ')') { - Node* pope = pop(&stack); - if (pope == NULL) { - res = 0; - break; - } - char popChar = (*pope).value; - if (popChar != '(') { - free(pope); - res = 0; - break; - } - } - - else if (string[i] == ']') { - Node* pope = pop(&stack); - if (pope == NULL) { - res = 0; - break; - } - char popChar = (*pope).value; - if (popChar != '[') { - free(pope); - res = 0; - break; - } - } - - else if (string[i] == '}') { - Node* pope = pop(&stack); - if (pope == NULL) { - res = 0; - break; - } - char popChar = (*pope).value; - if (popChar != '{') { - free(pope); - res = 0; - break; - } - } - } - - if (res == 0 || stack.size != 0) { - printf("Баланса нет\n"); - } - else { - printf("Баланс есть\n"); - } -} - diff --git a/5/stack.c b/5/stack.c deleted file mode 100644 index eaae60e..0000000 --- a/5/stack.c +++ /dev/null @@ -1,46 +0,0 @@ -#include "stack.h" - - -void init(Stack* stack) { - (*stack).top = NULL; - (*stack).size = 0; -} - -void push(Stack* stack, char value) { - Node* new_node = malloc(sizeof(Node)); - - (*new_node).value = value; - (*new_node).next = (*stack).top; - - (*stack).top = new_node; - (*stack).size++; -} - - - -Node* pop(Stack* stack) { - if ((*stack).top == NULL) { - return NULL; - } - - Node* out = (*stack).top; - (*stack).top = (*out).next; - - (*stack).size--; - - return out; -} - -void printStack(Stack* stack) { - if ((*stack).size == 0) { - printf("\n"); - return; - } - Node* current = (*stack).top; - do { - printf("%c ", (*current).value); - current = (*current).next; - } - while (current != NULL); - printf("\n"); -} diff --git a/5/stack.h b/5/stack.h deleted file mode 100644 index b2d5857..0000000 --- a/5/stack.h +++ /dev/null @@ -1,18 +0,0 @@ -#include -#include - -typedef struct Node { - char value; - struct Node* next; -} Node; - -typedef struct Stack { - Node* top; - int size; -} Stack; - - -void init(Stack* stack); -void push(Stack* stack, char value); -Node* pop(Stack* stack); -void printStack(Stack* stack); From 469a0a16632476808e60e0cbaacb9fc9a14f30cc Mon Sep 17 00:00:00 2001 From: stuffacc Date: Wed, 24 Dec 2025 19:12:29 +0300 Subject: [PATCH 5/6] one CMakeListsts --- 5/{advancedBalance => }/CMakeLists.txt | 7 ++++++- 5/{advancedBalance => }/advanced_balance.c | 0 5/{advancedBalance => }/stack.c | 0 5/{advancedBalance => }/stack.h | 0 4 files changed, 6 insertions(+), 1 deletion(-) rename 5/{advancedBalance => }/CMakeLists.txt (74%) rename 5/{advancedBalance => }/advanced_balance.c (100%) rename 5/{advancedBalance => }/stack.c (100%) rename 5/{advancedBalance => }/stack.h (100%) diff --git a/5/advancedBalance/CMakeLists.txt b/5/CMakeLists.txt similarity index 74% rename from 5/advancedBalance/CMakeLists.txt rename to 5/CMakeLists.txt index aeedfff..3af5bfa 100644 --- a/5/advancedBalance/CMakeLists.txt +++ b/5/CMakeLists.txt @@ -1,13 +1,18 @@ # Устанавливаем минимальную версию CMake cmake_minimum_required(VERSION 3.25) # Указываем название проекта и используемый язык(и) +set(CMAKE_C_STANDARD 99) +set(CMAKE_C_STANDARD_REQUIRED ON) + project(AdvancedBalance C) +project(ShuntingYard C) # Перечисляем библиотеки add_library(Stack stack.c) # Указываем исполняемый файл add_executable(AdvancedBalance advanced_balance.c) +add_executable(ShuntingYard shuntingYard.c) # Связываемся с библиотеками target_link_libraries(AdvancedBalance PRIVATE Stack) - +target_link_libraries(ShuntingYard PRIVATE Stack) diff --git a/5/advancedBalance/advanced_balance.c b/5/advanced_balance.c similarity index 100% rename from 5/advancedBalance/advanced_balance.c rename to 5/advanced_balance.c diff --git a/5/advancedBalance/stack.c b/5/stack.c similarity index 100% rename from 5/advancedBalance/stack.c rename to 5/stack.c diff --git a/5/advancedBalance/stack.h b/5/stack.h similarity index 100% rename from 5/advancedBalance/stack.h rename to 5/stack.h From a54d112bbcc053f0139413ab4f5423ff705481c7 Mon Sep 17 00:00:00 2001 From: stuffacc Date: Wed, 24 Dec 2025 19:20:31 +0300 Subject: [PATCH 6/6] =?UTF-8?q?=D0=BE=D0=BF=D1=8F=D1=82=D1=8C=20webkit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 5/advanced_balance.c | 132 +++++++++++++++++++++---------------------- 5/stack.c | 64 ++++++++++----------- 5/stack.h | 11 ++-- 3 files changed, 102 insertions(+), 105 deletions(-) diff --git a/5/advanced_balance.c b/5/advanced_balance.c index b77fd5c..796e1ff 100644 --- a/5/advanced_balance.c +++ b/5/advanced_balance.c @@ -1,70 +1,68 @@ #include "stack.h" -void main() { - char string[200] = {' '}; - - fgets(string, sizeof(string), stdin); - Stack stack; - init(&stack); - - int res = 1; - - for (int i = 0; i < 200; i++) { - if (string[i] == '\n') { - break; - } - else if ((string[i] == '(') || (string[i] == '[') || (string[i] == '{')) { - push(&stack, string[i]); - } - - else if (string[i] == ')') { - Node* pope = pop(&stack); - if (pope == NULL) { - res = 0; - break; - } - char popChar = (*pope).value; - if (popChar != '(') { - free(pope); - res = 0; - break; - } - } - - else if (string[i] == ']') { - Node* pope = pop(&stack); - if (pope == NULL) { - res = 0; - break; - } - char popChar = (*pope).value; - if (popChar != '[') { - free(pope); - res = 0; - break; - } - } - - else if (string[i] == '}') { - Node* pope = pop(&stack); - if (pope == NULL) { - res = 0; - break; - } - char popChar = (*pope).value; - if (popChar != '{') { - free(pope); - res = 0; - break; - } - } - } - - if (res == 0 || stack.size != 0) { - printf("Баланса нет\n"); - } - else { - printf("Баланс есть\n"); - } -} +void main() +{ + char string[200] = { ' ' }; + + fgets(string, sizeof(string), stdin); + Stack stack; + init(&stack); + + int res = 1; + + for (int i = 0; i < 200; i++) { + if (string[i] == '\n') { + break; + } else if ((string[i] == '(') || (string[i] == '[') || (string[i] == '{')) { + push(&stack, string[i]); + } + else if (string[i] == ')') { + Node* pope = pop(&stack); + if (pope == NULL) { + res = 0; + break; + } + char popChar = (*pope).value; + if (popChar != '(') { + free(pope); + res = 0; + break; + } + } + + else if (string[i] == ']') { + Node* pope = pop(&stack); + if (pope == NULL) { + res = 0; + break; + } + char popChar = (*pope).value; + if (popChar != '[') { + free(pope); + res = 0; + break; + } + } + + else if (string[i] == '}') { + Node* pope = pop(&stack); + if (pope == NULL) { + res = 0; + break; + } + char popChar = (*pope).value; + if (popChar != '{') { + free(pope); + res = 0; + break; + } + } + } + + if (res == 0 || stack.size != 0) { + printf("Баланса нет\n"); + } else { + printf("Баланс есть\n"); + } +} diff --git a/5/stack.c b/5/stack.c index eaae60e..447a011 100644 --- a/5/stack.c +++ b/5/stack.c @@ -1,46 +1,46 @@ #include "stack.h" - -void init(Stack* stack) { - (*stack).top = NULL; - (*stack).size = 0; +void init(Stack* stack) +{ + (*stack).top = NULL; + (*stack).size = 0; } -void push(Stack* stack, char value) { - Node* new_node = malloc(sizeof(Node)); - - (*new_node).value = value; - (*new_node).next = (*stack).top; +void push(Stack* stack, char value) +{ + Node* new_node = malloc(sizeof(Node)); + + (*new_node).value = value; + (*new_node).next = (*stack).top; - (*stack).top = new_node; - (*stack).size++; + (*stack).top = new_node; + (*stack).size++; } +Node* pop(Stack* stack) +{ + if ((*stack).top == NULL) { + return NULL; + } + Node* out = (*stack).top; + (*stack).top = (*out).next; -Node* pop(Stack* stack) { - if ((*stack).top == NULL) { - return NULL; - } + (*stack).size--; - Node* out = (*stack).top; - (*stack).top = (*out).next; - - (*stack).size--; - - return out; + return out; } -void printStack(Stack* stack) { - if ((*stack).size == 0) { - printf("\n"); - return; - } - Node* current = (*stack).top; - do { - printf("%c ", (*current).value); - current = (*current).next; - } - while (current != NULL); +void printStack(Stack* stack) +{ + if ((*stack).size == 0) { printf("\n"); + return; + } + Node* current = (*stack).top; + do { + printf("%c ", (*current).value); + current = (*current).next; + } while (current != NULL); + printf("\n"); } diff --git a/5/stack.h b/5/stack.h index b2d5857..7609179 100644 --- a/5/stack.h +++ b/5/stack.h @@ -1,17 +1,16 @@ -#include #include +#include typedef struct Node { - char value; - struct Node* next; + char value; + struct Node* next; } Node; typedef struct Stack { - Node* top; - int size; + Node* top; + int size; } Stack; - void init(Stack* stack); void push(Stack* stack, char value); Node* pop(Stack* stack);