#include #include #define LINESIZE 100 int main() { char vstup[LINESIZE]; char *brackets = "{[(<"; char *brackets1 = "}])>"; char stack[LINESIZE]; int position[LINESIZE]; int x = 0; char expected = '\0'; fgets(vstup, LINESIZE, stdin); printf("Read: %s", vstup); for (int j = 0; j < strlen(vstup); j++) { for (int i = 0; i < 4; i++) { if (vstup[j] == brackets[i]) { stack[x] = brackets[i]; position[x] = j; x++; break; } else if (vstup[j] == brackets1[i]) { if (stack[x-1] == '{') expected = '}'; else if (stack[x-1] == '[') expected = ']'; else if (stack[x-1] == '(') expected = ')'; else if (stack[x-1] == '<') expected = '>'; if (vstup[j] != expected) { if(expected != '\0'){ printf("Crossed bracket %c in %d, expected %c \n", vstup[j], j, expected); return 0; } else{ printf("Unexpected closing bracket %c in %d\n", vstup[j], j); return 0; } } x--; expected = '\0'; break; } } } if (x > 0) { printf("Missing closing brackets: "); for (int i = x-1; i >= 0; i--) { if (stack[i] == '{') printf("}"); else if (stack[i] == '[') printf("]"); else if (stack[i] == '(') printf(")"); else if (stack[i] == '<') printf(">"); } printf("\n"); } else { printf("All brackets OK\n"); } return 0; }