refresh
This commit is contained in:
parent
08d69395da
commit
2ab314489e
Binary file not shown.
69
a1/program.c
69
a1/program.c
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user