Есть простой способ подсчета парности скобок. Инициализируем счетчик нулем, а затем читаем строку. Если встречается открывающая скобка, в счетчик посылается +1, если закрывающая, то -1. После просмотра всей строки нулевое значение счетчика скажет нам о равенстве скобок, а ненулевое покажет количество лишних скобок. Каких именно - покажет знак.Попутно замечу, что подобные подсчеты не гарантирует проверки синтаксической правильности расстановки скобок, например, выражение )a+b( синтаксически неверно, но в нем "правильное" количество скобок.var i,k:integer; s:string;begin Write('Введите строку: '); Readln(s); k:=0; for i:=1 to Length(s) do case s[i] of '(':Inc(k); ')':Dec(k) end; if k=0 then Writeln('Скобки парные') else begin Write('Обнаружено непарных '); if k>0 then Write('открывающих') else Write('закрывающих'); Writeln(' скобок: ',abs(k)) endend.
Тестовое решение:Введите строку: (3*k+1/(c-5)*a;Обнаружено непарных открывающих скобок: 1