From 9244a1e7da5c32eb3135a9ef6dbfd4e8aa4f9b20 Mon Sep 17 00:00:00 2001 From: Deinerovych Date: Tue, 29 Oct 2024 14:56:05 +0100 Subject: [PATCH] 3 --- a1/program.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/a1/program.c b/a1/program.c index 0524f3d..ab08401 100644 --- a/a1/program.c +++ b/a1/program.c @@ -3,7 +3,6 @@ #define MAX_LEN 100 -// Функция для проверки пары скобок int is_matching_pair(char open, char close) { return (open == '(' && close == ')') || (open == '{' && close == '}') || @@ -11,18 +10,16 @@ int is_matching_pair(char open, char close) { (open == '<' && close == '>'); } -// Основная функция для проверки строки со скобками void check_brackets(const char *code) { char stack[MAX_LEN]; int positions[MAX_LEN]; - int top = -1; // Инициализация стека как пустого + int top = -1; printf("Read: %s\n", code); for (int i = 0; i < strlen(code); i++) { char ch = code[i]; - // Если символ — открывающая скобка, добавляем в стек if (ch == '(' || ch == '{' || ch == '[' || ch == '<') { if (top < MAX_LEN - 1) { stack[++top] = ch; @@ -32,7 +29,6 @@ void check_brackets(const char *code) { return; } } - // Если символ — закрывающая скобка else if (ch == ')' || ch == '}' || ch == ']' || ch == '>') { if (top == -1) { printf("Unmatched closing bracket %c at position %d\n", ch, i); @@ -45,11 +41,10 @@ void check_brackets(const char *code) { stack[top] == '[' ? ']' : '>'); return; } - top--; // Убираем из стека совпавшую пару + top--; } } - // Проверяем оставшиеся незакрытые скобки if (top != -1) { printf("Unmatched opening bracket %c at position %d, expected %c\n", stack[top], positions[top], @@ -62,8 +57,13 @@ void check_brackets(const char *code) { } int main() { - // Примеры для проверки - check_brackets("{[<(asdf)>]}"); - check_brackets(")"); + char code[MAX_LEN]; + + if (fgets(code, MAX_LEN, stdin) != NULL) { + code[strcspn(code, "\n")] = '\0'; + check_brackets(code); + } + return 0; } +