Проверить правильность расстановки круглых и квадратных скобок в выражениях - 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; }
Объяснение кода листинга программы
- В этом коде используется стандартная библиотека языка C, что позволяет использовать функции для работы со строками и памятью.
- Код проверяет правильность расстановки скобок в строке. Он использует стек для отслеживания открытых скобок и проверки закрывающих скобок.
- Если в строке недостаточно места в стеке или если закрывающая скобка не соответствует открывающей, функция возвращает 1, указывая на ошибку.
- В функции main() код запрашивает строку у пользователя с помощью функции scanf() и отображает результат проверки функции test_brackets().
- Код продолжает запрашивать строки у пользователя и проверять их до тех пор, пока пользователь не введет строку, содержащую ошибку в расстановке скобок.
- В конце программы функция main() возвращает 0, указывая на успешное завершение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д