Проверить правильность расстановки круглых и квадратных скобок в выражениях - C (СИ)

Узнай цену своей работы

Формулировка задачи:

дана строка символов проверить правильность расстановки круглых и квадратных скобок в выражениях

Решение задачи: «Проверить правильность расстановки круглых и квадратных скобок в выражениях»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
#define ROUND_OPEN '('
#define ROUND_CLOSE ')'
#define SQUARE_OPEN '['
#define SQUARE_CLOSE ']'
 
#define STR_LEN 256
#define STR_MASK "%255[^\n]%*c"
 
int test_brackets(const char * s) {
    static char stack[STR_LEN];
    int pos = -1;
    
    while ( *s ) {
        switch ( *s ) {
            case ROUND_OPEN :
            case SQUARE_OPEN :
                if ( pos >= STR_LEN - 1 )
                    return 1;
                stack[++pos] = *s;
                break;
            case ROUND_CLOSE :
                if ( pos < 0 || stack[pos--] != ROUND_OPEN )
                    return 1;
                break;
            case SQUARE_CLOSE :
                if ( pos < 0 || stack[pos--] != SQUARE_OPEN )
                    return 1;
                break;
        }
        ++s;
    }
    
    return ( pos != -1 );
}
 
int main(void) {
    char str[STR_LEN];
    
    while ( printf("String: ") && scanf(STR_MASK, str) == 1 )
        printf("%sorrect.\n", ( test_brackets(str) ) ? "Not c" : "C");
    
    return 0;
}

Объяснение кода листинга программы

  1. В этом коде используется стандартная библиотека языка C, что позволяет использовать функции для работы со строками и памятью.
  2. Код проверяет правильность расстановки скобок в строке. Он использует стек для отслеживания открытых скобок и проверки закрывающих скобок.
  3. Если в строке недостаточно места в стеке или если закрывающая скобка не соответствует открывающей, функция возвращает 1, указывая на ошибку.
  4. В функции main() код запрашивает строку у пользователя с помощью функции scanf() и отображает результат проверки функции test_brackets().
  5. Код продолжает запрашивать строки у пользователя и проверять их до тех пор, пока пользователь не введет строку, содержащую ошибку в расстановке скобок.
  6. В конце программы функция main() возвращает 0, указывая на успешное завершение.

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


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

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

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