определения правильности скобочного выражения на основе стека, реализованного с помощью массива с++
Добрый вечер, уважаемые коллеги!
Пользователь вводит выражение, содержащее скобки. Нужно проверить правильность заполнения этих скобок, т. е. если есть 3 закрывающих скобки, и 3 открывающих, то выражение правильное. ((())). Если же их количество не совпадает, то выражение неправильное. Надо реализовать функцию на основе стека. Т. е. если в выражении содержится скобка, то она помещается в вершину стека. Если при этом прошлое выражение содержит открывающую скобку ( "(" ), а следующее закрывающую ( ")" ), то вершина стека обнуляется. Я реализовал вот в такой программе:
for(int i=0;i<10000;i++)
{
if ((massiv_input=='(') or
(massiv_input==')'))
{
top_of_stack = massiv_input;
if ((top_of_stack == ')') and (massiv_stack[j] == '('))
{
massiv_stack[j] = NULL;
top_of_stack = massiv_stack[j-1];
j--;
}
else
{
massiv_stack[j] = top_of_stack;
j++;
}
}
}
for (int i=0;i
}
Вопрос состоит в следующем: у меня почему то массив просто переписывает входной массив. Почему скобки не уничтожаются взаимно и как сделать так, чтобы печатались лишь лишние скобки в ответе (т. е. если больше закрывающих, то закрывающие, если больше открывающих то открывающие)
С Уважением!
потому что нужно реализовать именно с помощью статического массива