Update a1/program.c
This commit is contained in:
parent
46666f11bc
commit
e118e96953
17
a1/program.c
17
a1/program.c
@ -48,22 +48,27 @@ int main() {
|
||||
|
||||
printf("Read: %s\n", code);
|
||||
|
||||
// Дополнительный массив для хранения индексов открывающих скобок
|
||||
int indexStack[MAX_LEN];
|
||||
int indexTop = -1;
|
||||
|
||||
for (int i = 0; i < strlen(code); i++) {
|
||||
char c = code[i];
|
||||
|
||||
if (c == '(' || c == '{' || c == '[' || c == '<') {
|
||||
push(c);
|
||||
indexStack[++indexTop] = i; // Сохраняем индекс открывающей скобки
|
||||
} else if (c == ')' || c == '}' || c == ']' || c == '>') {
|
||||
if (top == -1) {
|
||||
printf("Unexpected closing bracket %c in %d\n", c, i);
|
||||
return 0; // Ожидается код завершения 0
|
||||
return 1; // Возвращаем 1 при ошибке
|
||||
}
|
||||
|
||||
char lastOpen = pop();
|
||||
int lastIndex = indexStack[indexTop--]; // Извлекаем индекс соответствующей открывающей скобки
|
||||
if (!isMatchingPair(lastOpen, c)) {
|
||||
// Используем i для вывода позиции, где найдена ошибка
|
||||
printf("Crossed bracket %c in %d, expected %c\n", c, i + 1, matchingCloseBracket(lastOpen));
|
||||
return 0; // Ожидается код завершения 0
|
||||
printf("Crossed bracket %c in %d, expected %c\n", c, lastIndex + 1, matchingCloseBracket(lastOpen));
|
||||
return 1; // Возвращаем 1 при ошибке
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -75,9 +80,9 @@ int main() {
|
||||
printf("%c", matchingCloseBracket(stack[i]));
|
||||
}
|
||||
printf("\n");
|
||||
return 0; // Ожидается код завершения 0
|
||||
return 1; // Возвращаем 1 при ошибке
|
||||
}
|
||||
|
||||
printf("All brackets OK\n");
|
||||
return 0;
|
||||
return 0; // Возвращаем 0 при успехе
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user