Update a1/program.c
This commit is contained in:
parent
e88adeb6e1
commit
d54ea6c6c8
13
a1/program.c
13
a1/program.c
@ -12,6 +12,14 @@ int isMatching(char opening, char closing) {
|
|||||||
(opening == '<' && closing == '>');
|
(opening == '<' && closing == '>');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Function to get the expected closing bracket for a given opening bracket
|
||||||
|
char getExpectedClosingBracket(char opening) {
|
||||||
|
return (opening == '{') ? '}' :
|
||||||
|
(opening == '[') ? ']' :
|
||||||
|
(opening == '(') ? ')' :
|
||||||
|
(opening == '<') ? '>' : '\0';
|
||||||
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
char input[MAX_LENGTH + 1];
|
char input[MAX_LENGTH + 1];
|
||||||
char stack[MAX_LENGTH];
|
char stack[MAX_LENGTH];
|
||||||
@ -54,8 +62,7 @@ int main() {
|
|||||||
if (!isMatching(stack[top--], current)) {
|
if (!isMatching(stack[top--], current)) {
|
||||||
printf("Read: %s\n", input);
|
printf("Read: %s\n", input);
|
||||||
printf("Crossed bracket %c in %d, expected %c.\n", current, position,
|
printf("Crossed bracket %c in %d, expected %c.\n", current, position,
|
||||||
(current == '}') ? '{' : (current == ']') ? '[' :
|
getExpectedClosingBracket(stack[top + 1]));
|
||||||
(current == ')') ? '(' : '<');
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -64,7 +71,7 @@ int main() {
|
|||||||
// If there are unmatched opening brackets left in the stack
|
// If there are unmatched opening brackets left in the stack
|
||||||
if (top != -1) {
|
if (top != -1) {
|
||||||
printf("Read: %s\n", input);
|
printf("Read: %s\n", input);
|
||||||
printf("Unexpected end of input, expected closing bracket for %c.\n", stack[top]);
|
printf("Missing closing brackets: %c\n", getExpectedClosingBracket(stack[top]));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user