This commit is contained in:
Oleksandr Vyshniakov 2025-10-21 23:58:45 +02:00
parent 08d69395da
commit 2ab314489e
2 changed files with 56 additions and 13 deletions

Binary file not shown.

View File

@ -7,43 +7,86 @@ int proverka(char otv, char zatv) {
if (otv == '(' && zatv == ')') { if (otv == '(' && zatv == ')') {
return 1; return 1;
} }
if (otv == '{' && zatv == '}') { else if (otv == '{' && zatv == '}') {
return 1; return 1;
} }
if (otv == '[' && zatv == ']') { else if (otv == '[' && zatv == ']') {
return 1; return 1;
} }
if (otv == '<' && zatv == '>') { else if (otv == '<' && zatv == '>') {
return 1; return 1;
} }
return 0; else {
return 0;
}
} }
int main() { int main() {
char riadok[MAX_SIZE]; char riadok[MAX_SIZE];
char zasobnik[MAX_SIZE]; char zasobnik[MAX_SIZE];
int vrch = -1; int vrch = -1;
int i;
int chyba = 0; int chyba = 0;
char znak; char znak;
if (fgets(riadok, MAX_SIZE, stdin)==NULL) { if (fgets(riadok, MAX_SIZE, stdin) == NULL) {
printf("Input Error!\n"); printf("Input Error!\n");
return 1; return 1;
} }
riadok[strcspn(riadok, "\n")]=='0'; riadok[strcspn(riadok, "\n")] = '\0';
printf("Read: %s\n", riadok); printf("Read: %s\n", riadok);
int dlzka = strlen(riadok); int dlzka = strlen(riadok);
for (int i = 0; i < dlzka; i++) { for (int i = 0; i < dlzka; i++) {
znak = riadok[i]; znak = riadok[i];
zasobnik[++vrch] = znak;
} else if (znak == ')' || znak == ']' || znak == '}' || znak == '>') { if (znak == '(' || znak == '[' || znak == '{' || znak == '<') {
zasobnik[++vrch] = znak;
}
else if (znak == ')' || znak == ']' || znak == '}' || znak == '>') {
if (vrch < 0) {
printf("Unexpected closing bracket %c in %d\n", znak, i + 1);
chyba = 1;
break;
}
if (!proverka(zasobnik[vrch], znak)) {
char ocakavany;
switch (zasobnik[vrch]) {
case '(':
ocakavany = ')';
break;
case '[':
ocakavany = ']';
break;
case '{':
ocakavany = '}';
break;
case '<':
ocakavany = '>';
break;
default:
ocakavany = '?';
break;
}
printf("Crossed bracket %c in %d, expected %c\n", znak, i + 1, ocakavany);
chyba = 1;
break;
}
vrch--;
}
} }
if (!chyba && vrch >= 0) {
printf("Unclosed bracket %c at the end\n", zasobnik[vrch]);
chyba = 1;
}
if (!chyba) {
printf("All brackets OK\n");
}
return 0; return 0;
} }