Паскаль Дано рядок, що містить кілька круглих дужок. Якщо дужки

розставлені правильно (тобто кожній відкритій відповідає одна закрита), то

вивести число 0. В іншому випадку вивести або номер позиції, в якій

розташована перша хибна дужка, що закриває, або, якщо закриваючих дужок не вистачає, число -1.


на Русском Дана строка, содержащая несколько круглых скобок. Если скобки

расставлены правильно (т.е. каждой открытой соответствует одна закрытая), то

вывести число 0. В противном случае вывести или номер позиции, в которой

расположена первая закрывающая ложная скобка или, если закрывающих скобок не хватает, число -1.

Ответы

Ответ дал: NotHpp
1

Код:

function CheckBrackets(s: string): integer;

var

 stack: string;

 i: integer;

begin

 stack := '';

 for i := 1 to Length(s) do

 begin

   if s[i] = '(' then

     stack := stack + '('

   else if s[i] = ')' then

   begin

     if stack = '' then

       Exit(i)

     else

       Delete(stack, Length(stack), 1);

   end;

 end;

 if stack = '' then

   Result := 0

 else

   Result := -1;

end;

Приклад використання:
var

 s: string;

 res: integer;

begin

 s := '()(())';

 res := CheckBrackets(s);

 if res = 0 then

   Writeln('Дужки розставлені правильно')

 else if res = -1 then

   Writeln('Не вистачає закриваючих дужок')

 else

   Writeln('Помилка на позиції ', res);

end.

Вас заинтересует