diff --git a/a1/program.c b/a1/program.c index e69de29..3d17de4 100644 --- a/a1/program.c +++ b/a1/program.c @@ -0,0 +1,60 @@ +#include +#include + +int open_brackets(char a) { + return (a == '(' || a == '[' || a == '{' || a == '<'); +} + +int close_brackets(char a) { + return (a == ')' || a == ']' || a == '}' || a == '>'); +} + +char brackets(char a) { + switch (a) { + case ')': + return '('; + case ']': + return '['; + case '}': + return '{'; + case '>': + return '<'; + default: + return '\0'; + } +} + +int main() { + char code[100]; + printf("Read: "); + fgets(code, sizeof(code), stdin); + + int stack[100]; + int skobochka = -1; + int error = -1; + + for (int i = 0; code[i] != '\0'; i++) { + if (open_brackets(code[i])) { + stack[++skobochka] = i; + } else if (close_brackets(code[i])) { + if (skobochka == -1) { + error = i; + break; + } + if (code[stack[skobochka]] != brackets(code[i])) { + error = i; + break; + } + skobochka--; + } + } + + if (error == -1 && skobochka == -1) { + printf("All brackets OK\n"); + } else if (error == -1) { + printf("Crossed bracket %d expected\n", stack[skobochka]); + } else { + printf("Prekrížené zátvorky %c v pozícii %d, sa očakávalo %c\n", code[error], error, brackets(code[error])); + } + return 0; +}