Update a1/program.c

This commit is contained in:
Marat Izmailov 2024-10-24 10:47:58 +00:00
parent 46666f11bc
commit e118e96953

View File

@ -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 при успехе
}