В строке записано математическое выражение с круглыми скобками. Проверить правильность расстановки скобок(что у каждой скобки есть пара, в паре открывающая предшествует закрывающей, а между скобками пары располагается правильное скобочное выражение) — Pascal(Паскаль)

(*Проверка согласованности однотипных скобок в строке.*)
function ParsePh(const aStr : String) : Boolean;
const
  P1 = '(';
  P2 = ')';
var
  i, PCnt: Integer;
  Res : Boolean;
begin
  PCnt := 0;
  Res := True;
  for i := 1 to Length(aStr) do begin
    {Пропускаем символы, отличные от скобок.}
    if not (aStr[i] in [P1, P2]) then Continue;
    {Анализируем скобки.}
    case aStr[i] of
      P1 : Inc(PCnt);
      P2 : Dec(PCnt);
    end;
    if PCnt < 0 then begin
      Res := False;
      Break;
    end;
  end;
 
  ParsePh := Res and (PCnt = 0);
end;

Leave a Comment

96 − = 94