В выходном параметре процедуры символ '*' означает верно поставленную скобку. Символ '?' стоит на месте открывающей скобки, которой не хватает закрывающей. '!' - неправильно поставленная закрывающая скобка

code: #pascal
Program String69;
Procedure checkbrackets(var s:string;ob,cb:char);
Var
 i,Count:integer;
Begin
  While pos(ob,s) <> 0 do
    Begin
      count:=0;
    For i:=pos(ob,s) to length(s) do
      Begin
        If s[i] = ob then 
          inc(count)
        Else If s[i] = cb then 
          dec(count);
      If count = 0 then 
        break;
      End;
   If count = 0 then 
     Begin
       insert('*',s,pos(ob,s));
       delete(s,pos(ob,s),1);
       insert('*',s,i);
       delete(s,i+1,1);
     End
   Else 
     Begin
       insert('?',s,pos(ob,s));
       delete(s,pos(ob,s),1);
     End;
  End;
While pos(cb,s) <> 0 do
  Begin
    insert('!',s,pos(cb,s));
    delete(s,pos(cb,s),1);
  End;
End;
 
Var
  a:string;
Begin
  readln(a);
  checkbrackets(a,'(',')');
  If (pos('!',a) = 0) And (pos('?',a) = 0) Then 
    writeln(0)
  Else 
    If (pos('!',a) <> 0) And (pos('?',a) = 0) Then 
      writeln(pos('!',a))
    Else 
      writeln(-1);
End.

автор: Mr.Y

Поделиться:

Похожие статьи: