From b800283ce0dd1d7c287f11ba994118eb522f34a8 Mon Sep 17 00:00:00 2001 From: Mykola Syniavskyi Date: Fri, 24 Oct 2025 01:53:29 +0000 Subject: [PATCH] Aktualizovat a1/program.c --- a1/program.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/a1/program.c b/a1/program.c index e69de29..0f63486 100644 --- a/a1/program.c +++ b/a1/program.c @@ -0,0 +1,64 @@ +#include +#include + +#define MAX_LEN 101 + +int open(char a) { + return (a=='('|| a=='[' || a=='{' || a=='<'); +} +int close(char a) { + return (a==')'|| a==']' || a=='}' || a=='>'); +} + +char matching(char a) { + switch (a) { + case ')': return '('; + case ']': return '['; + case '}': return '{'; + case '>': return '<'; + case '(': return ')'; + case '[': return ']'; + case '{': return '}'; + case '<': return '>'; + default: return 0; + } +} + +int main() { + char line[MAX_LEN]; + if (!fgets(line, sizeof(line), stdin)) + return 0; + line[strcspn(line, "\n")] = 0; + printf("Read: %s\n", line); + + char stack[MAX_LEN-1]; + int verh =-1; + + for (int i=0; line[i]; i++) { + char a=line[i]; + + if (open(a)) { + if (verh < MAX_LEN-2){ + stack[++verh] =a;} + } else if (close(a)) { + if (verh == -1) { + printf("Unexpected closing bracket %c in %d\n", a, i); + return 0; + } + if (stack[verh] != matching(a)) { + printf("Crossed bracket %c in %d, expected %c\n", a, i, matching(stack[verh])); + return 0; + } + verh--; + } + } + + if (verh !=-1) { + printf("Unclosed bracket %c at end, expected %c\n", + stack[verh], matching(stack[verh])); + return 0; + } + printf("All brackets OK\n"); + return 0; +} +