Проверить правильность расстановки скобок во введенной строке - 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 и проверяет ее на правильность расстановки скобок.

  1. char stack[256]; - в этой строке объявляется массив stack, который будет использоваться как стек.
  2. int test(const char* s){ - функция test принимает на вход указатель на строку s и возвращает 1, если скобки расставлены верно, и 0 в противном случае.
  3. char* top=stack; - в этой строке указатель top инициализируется значением указателя на начало стека stack.
  4. while (*s){ - в этом цикле происходит проверка каждого символа в строке s.
  5. if (*s==‘(‘ || *s==‘[‘ || *s==‘{‘) - если текущий символ является открывающей скобкой ('),' [']' или '{', то этот символ копируется в стек.
  6. *top++=*s++; - значение текущего символа копируется в стек, а указатель top смещается вверх, чтобы иметь возможность добавлять новые символы.
  7. else { - если текущий символ не является открывающей скобкой, то проверяется, является ли он закрывающей скобкой.
  8. if (*s==‘)’ && *top- -!=‘(‘) return 0; - если текущий символ является закрывающей скобкой (')', а в стеке нет соответствующей открывающей скобки ('), то функция возвращает 0, указывая на ошибку в расстановке скобок.
  9. if (*s==‘]’ && *top- -!=‘[‘) return 0; - аналогичная проверка для закрывающей скобки ']'.
  10. if (*s==‘}’ && *top- -!=‘{‘) return 0; - аналогичная проверка для закрывающей скобки '}'.
  11. s++; - после выполнения проверок текущий символ помещается в стек, и указатель s смещается вверх.
  12. return 1; - если все символы проверены и скобки расставлены верно, функция возвращает 1. Таким образом, данный код проверяет правильность расстановки скобок в строке.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы