String69. Дана строка, содержащая латинские буквы и круглые скобки. Если скобки расставлены правильно (то есть каждой открывающей соответствует одна закрывающая), то вывести число $$0$$. В противном случае вывести или номер позиции, в которой расположена первая ошибочная закрывающая скобка, или, если закрывающих скобок не хватает, число $$–1$$.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
program String69; var S:String; i,Num,Error:integer; begin Write('S: '); Readln(S); i:=1; error:=0; while (i<=Length(S)) do begin if S[i]='(' then Num:=Num+1; if S[i]=')' then Num:=Num-1; if (Num<0) and (error=0) then error:=i; inc(i); end; if error<>0 then Writeln(error) else if Num>0 then Writeln(-1) else Writeln(0); end. |
Другие задачи из раздела String можно посмотреть здесь.
Комментарии: