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 == ')') {
return 1;
}
if (otv == '{' && zatv == '}') {
else if (otv == '{' && zatv == '}') {
return 1;
}
if (otv == '[' && zatv == ']') {
else if (otv == '[' && zatv == ']') {
return 1;
}
if (otv == '<' && zatv == '>') {
else if (otv == '<' && zatv == '>') {
return 1;
}
return 0;
else {
return 0;
}
}
int main() {
char riadok[MAX_SIZE];
char zasobnik[MAX_SIZE];
int vrch = -1;
int i;
int chyba = 0;
char znak;
if (fgets(riadok, MAX_SIZE, stdin)==NULL) {
if (fgets(riadok, MAX_SIZE, stdin) == NULL) {
printf("Input Error!\n");
return 1;
}
riadok[strcspn(riadok, "\n")]=='0';
riadok[strcspn(riadok, "\n")] = '\0';
printf("Read: %s\n", riadok);
int dlzka = strlen(riadok);
for (int i = 0; i < dlzka; 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;
}
}