usaa24/a1/program.c
Bohdan Kapliuk 04b696bd56 a1
2024-10-28 00:23:28 +02:00

58 lines
1.8 KiB
C

#include <stdio.h>
#include <string.h>
#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;
}