#include "stdio.h" #include "string.h" struct Stack { char symbol[100]; int size; }; void pushStack(struct Stack* stack, char symbol){ stack->symbol[stack->size] = symbol; stack->size++; } float popStack(struct Stack* stack){ char c = stack->symbol[stack->size -1]; stack->size -= 1; return c; } int main(){ char string[50]; //0 - 49 char stack_size[50]; //0 - 49 struct Stack stack; memset(&stack, 0, sizeof(struct Stack)); int x = 0; scanf("%[^\n]", string); strcpy(stack_size, string); int i = 0; while (i <= strlen(string)){ if (stack_size[i] != '[' && stack_size[i] != '(' && stack_size[i] != '{' && stack_size[i] != '<'){ } else { pushStack(&stack, stack_size[i]); stack_size[i] = ' '; x++; } if( stack_size[i] != ']' && stack_size[i] != ')' && stack_size[i] != '}' && stack_size[i] != '>'){ } else { if (x == 0){ printf ("Read: %s\nUnexpected closing bracket %c in %d\n",string, stack_size[i], i); return 0; } char c = popStack(&stack); if (c =='('){ c--; } if (c+2 != stack_size[i]){ printf("Read: %s\nCrossed bracket %c in %d, expected %c \n", string, stack_size[i], i, c+2); return 0; } } i++; //if () break; } if (stack.size > 0){ printf("Read: %s\nMissing closing brackets: ", string); while (stack.size > 0){ char c = popStack(&stack); if (c =='('){ c--; } printf("%c", c+2); } printf("\n"); return 0; } printf("Read: %s\nAll brackets OK\n", string); return 0; }