diff --git a/a1/program.c b/a1/program.c index a191c07..ff28231 100644 --- a/a1/program.c +++ b/a1/program.c @@ -22,6 +22,15 @@ char pop() { return '\0'; // Если стек пустой } +// Функция для получения соответствующей закрывающей скобки +char matchingCloseBracket(char open) { + if (open == '(') return ')'; + if (open == '{') return '}'; + if (open == '[') return ']'; + if (open == '<') return '>'; + return '\0'; +} + // Функция для проверки соответствия скобок int isMatchingPair(char open, char close) { return (open == '(' && close == ')') || @@ -45,7 +54,6 @@ int main() { if (c == '(' || c == '{' || c == '[' || c == '<') { push(c); } else if (c == ')' || c == '}' || c == ']' || c == '>') { - // Проверка на неожиданную закрывающую скобку без пары if (top == -1) { printf("Unexpected closing bracket %c in %d\n", c, i); return 0; // Ожидается код завершения 0 @@ -53,7 +61,7 @@ int main() { char lastOpen = pop(); if (!isMatchingPair(lastOpen, c)) { - printf("Crossed bracket %c in %d, expected %c\n", c, i + 1, lastOpen); + printf("Crossed bracket %c in %d, expected %c\n", c, i + 1, matchingCloseBracket(lastOpen)); return 0; // Ожидается код завершения 0 } } @@ -61,7 +69,7 @@ int main() { // Проверка на незакрытые скобки if (top != -1) { - printf("Unclosed bracket %c\n", stack[top]); + printf("Missing closing brackets: %c\n", matchingCloseBracket(stack[top])); return 0; // Ожидается код завершения 0 }