diff --git a/a1/program.c b/a1/program.c index da07691..dac789b 100644 --- a/a1/program.c +++ b/a1/program.c @@ -3,25 +3,28 @@ #define MAX 100 -// Pomocná funkcia na kontrolu páru zátvoriek -int is_matching_pair(char open, char close) { - return (open == '(' && close == ')') || - (open == '{' && close == '}') || - (open == '[' && close == ']') || - (open == '<' && close == '>'); +// Функція для визначення очікуваної закриваючої дужки +char expected_close(char open) { + switch(open) { + case '(': return ')'; + case '{': return '}'; + case '[': return ']'; + case '<': return '>'; + default: return '\0'; + } } -// Funkcia na kontrolu správnosti zátvoriek +// Функція для перевірки коректності дужок void check_brackets(const char *code) { char stack[MAX]; - int stack_top = -1; // vrchol zásobníka + int stack_top = -1; // Вершина стеку printf("Read: %s\n", code); for (int i = 0; code[i] != '\0'; i++) { char c = code[i]; - // Ak je znak otváracia zátvorka, pridaj ho na zásobník + // Якщо відкрита дужка, додаємо її до стеку if (c == '(' || c == '{' || c == '[' || c == '<') { if (stack_top >= MAX - 1) { printf("Stack overflow at position %d\n", i); @@ -29,21 +32,22 @@ void check_brackets(const char *code) { } stack[++stack_top] = c; } - // Ak je znak zatváracia zátvorka + // Якщо закрита дужка else if (c == ')' || c == '}' || c == ']' || c == '>') { if (stack_top < 0) { printf("Unexpected closing bracket %c in %d\n", c, i); return; } char top = stack[stack_top--]; - if (!is_matching_pair(top, c)) { - printf("Crossed bracket %c in %d, expected %c\n", c, i, top); + char expected = expected_close(top); + if (expected != c) { + printf("Crossed bracket %c in %d, expected %c\n", c, i, expected); return; } } } - // Skontroluj, či sú všetky zátvorky uzavreté + // Перевірка, чи всі дужки закриті if (stack_top >= 0) { printf("Missing closing bracket: %c\n", stack[stack_top]); } else { @@ -56,11 +60,11 @@ int main() { fgets(code, MAX, stdin); - // Odstráň novoriadok na konci + // Видаляємо символ нової строки в кінці code[strcspn(code, "\n")] = '\0'; - // Skontroluj zátvorky + // Перевірка дужок check_brackets(code); return 0; -} \ No newline at end of file +}