Написать исходный код в pascal-е. решить по обработке строковых данных с использованием подпрограмм: в строке, среди знаков могут встречаться открывающие и закрывающие скобки. проверить с подпрограммы равенство числа открывающихся скобок числу закрывающихся.
Попутно замечу, что подобные подсчеты не гарантирует проверки синтаксической правильности расстановки скобок, например, выражение )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))
end
end.
Тестовое решение:
Введите строку: (3*k+1/(c-5)*a;
Обнаружено непарных открывающих скобок: 1
str:string;
i, n9, n0:integer;
begin
readln(str);
for i:=1 to Length(str) do
if str[i] = '(' then
n9 := n9 + 1
else
if str[i] = ')' then
n0 := n0 + 1;
if n9 = n0 then
writeln('Число открывающихся скобок равно числу закрывающихся')
else
writeln('Число открывающихся скобок не равно числу закрывающихся');
end.