#include #include #define MAX_SIZE 110 int proverka(char otv, char zatv) { if (otv == '(' && zatv == ')') { return 1; } else if (otv == '{' && zatv == '}') { return 1; } else if (otv == '[' && zatv == ']') { return 1; } else if (otv == '<' && zatv == '>') { return 1; } else { return 0; } } int main() { char riadok[MAX_SIZE]; char zasobnik[MAX_SIZE]; int vrch = -1; int chyba = 0; char znak; if (fgets(riadok, MAX_SIZE, stdin) == NULL) { printf("Input Error!\n"); return 1; } riadok[strcspn(riadok, "\n")] = '\0'; printf("Read: %s\n", riadok); int dlzka = strlen(riadok); for (int i = 0; i < dlzka; i++) { znak = riadok[i]; if (znak == '(' || znak == '[' || znak == '{' || znak == '<') { zasobnik[++vrch] = znak; } else if (znak == ')' || znak == ']' || znak == '}' || znak == '>') { if (vrch < 0) { printf("Unexpected closing bracket %c in %d\n", znak, i + 1); chyba = 1; break; } if (!proverka(zasobnik[vrch], znak)) { char ocakavany; switch (zasobnik[vrch]) { case '(': ocakavany = ')'; break; case '[': ocakavany = ']'; break; case '{': ocakavany = '}'; break; case '<': ocakavany = '>'; break; default: ocakavany = '?'; break; } printf("Crossed bracket %c in %d, expected %c\n", znak, i + 1, ocakavany); chyba = 1; break; } vrch--; } } if (!chyba && vrch >= 0) { printf("Unclosed bracket %c at the end\n", zasobnik[vrch]); chyba = 1; } if (!chyba) { printf("All brackets OK\n"); } return 0; }