Проверить правильность расстановки скобок во введенной строке - C (СИ)
Формулировка задачи:
Проверить правильность расстановки скобок в введенное строке, учитывая круглые, квадратные и фигурные скобки. Стока заканчивается переносом строки(кл. “enter”). Длинна строки не ограничена.
Пример:
Введите строку для проверки:
(abc[h]{qwe}) Скобки Расставлены верно.
Введите строку для проверки:
(a{fhy}j}] Скобки Расставлены не верно.
Решение задачи: «Проверить правильность расстановки скобок во введенной строке»
textual
Листинг программы
char stack[256];
int test(const char* s){
char* top=stack;
while (*s){
if (*s==‘(‘ || *s==‘[‘ || *s==‘{‘)
*top++=*s++;
else {
if (*s==‘)’ && *top- -!=‘(‘) return 0;
if (*s==‘]’ && *top- -!=‘[‘) return 0;
if (*s==‘}’ && *top- -!=‘{‘) return 0;
s++;
}
return 1;
}
Объяснение кода листинга программы
В данном коде представлена функция test, которая принимает на вход строку s и проверяет ее на правильность расстановки скобок.
char stack[256];- в этой строке объявляется массив stack, который будет использоваться как стек.int test(const char* s){- функция test принимает на вход указатель на строку s и возвращает 1, если скобки расставлены верно, и 0 в противном случае.char* top=stack;- в этой строке указатель top инициализируется значением указателя на начало стека stack.while (*s){- в этом цикле происходит проверка каждого символа в строке s.if (*s==‘(‘ || *s==‘[‘ || *s==‘{‘)- если текущий символ является открывающей скобкой ('),' [']' или '{', то этот символ копируется в стек.*top++=*s++;- значение текущего символа копируется в стек, а указатель top смещается вверх, чтобы иметь возможность добавлять новые символы.else {- если текущий символ не является открывающей скобкой, то проверяется, является ли он закрывающей скобкой.if (*s==‘)’ && *top- -!=‘(‘) return 0;- если текущий символ является закрывающей скобкой (')', а в стеке нет соответствующей открывающей скобки ('), то функция возвращает 0, указывая на ошибку в расстановке скобок.if (*s==‘]’ && *top- -!=‘[‘) return 0;- аналогичная проверка для закрывающей скобки ']'.if (*s==‘}’ && *top- -!=‘{‘) return 0;- аналогичная проверка для закрывающей скобки '}'.s++;- после выполнения проверок текущий символ помещается в стек, и указатель s смещается вверх.return 1;- если все символы проверены и скобки расставлены верно, функция возвращает 1. Таким образом, данный код проверяет правильность расстановки скобок в строке.