Упражнения на C: проверка правильности заданной строки
Программирование на C: упражнение 10 с решением
Напишите на языке программирования C, чтобы проверить, является ли данная строка допустимой или нет, строка содержит символы '(', ')', '{', '}', '[' и ']'. Строка действительна, если открытые скобки должны быть закрыты скобками того же типа и в правильном порядке.
Код C:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
static bool is_valid_Parentheses(char *s)
{
int n = 0, cap = 100;
char *tstack = malloc(cap);
while (*s !='\0') {
switch(*s) {
case '(':
case '[':
case '{':
if (n + 1 >= cap) {
cap *= 2;
tstack = realloc(tstack, cap);
}
tstack[n++] = *s;
break;
case ')':
if (tstack[--n] !='(') return false;
break;
case ']':
if (tstack[--n] !='[') return false;
break;
case '}':
if (tstack[--n] !='{') return false;
break;
default:
return false;
}
s++;
}
return n == 0;
}
int main(void)
{
//char **vbracket ="()[]{}";
char **vbracket ="([)]";
printf("%s\n", is_valid_Parentheses(vbracket) ? "true" : "false");
return 0;
}
Пример вывода:
ложный
Блок - схема:
Решение
Внесите свой код и комментарии через Disqus.
Предыдущий: Напишите программирование на C, чтобы найти все уникальные четверки в данном массиве целых чисел, сумма которых равна нулю.
Далее: Напишите программу на C для генерации всех комбинаций правильно сформированных скобок из n заданных пар скобок.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования
disqus2code