Страница 1 из 1

баланс скобок

Добавлено: 19 дек 2009, 11:49
garic
помогите пожалуста исправить ошибку ,у меня только 'да' выдаёт!

program z1;
uses crt;
var s:string; i,k:integer;
begin
clrscr;
readln(s);
k:=0;
for i:=1 to length(s) do
begin
if s='(' then k:=k+1;
if s=')' then k:=k-1;
if k<0 then begin writeln('NO'); halt; end;
end;
writeln('YES!');
readkey;
end.

Re: баланс скобок

Добавлено: 20 дек 2009, 15:14
Alexeus
Ошибка, во первых если скобок ')' больше то действие

Код: Выделить всё

if k<0 then begin writeln('NO'); 
не выполниться,
и во вторых зачем writeln в цикл заключил,
вот рабочий вариант

Код: Выделить всё

program z1;
uses crt;
var s:string; i,k:integer;
begin
 clrscr;
 readln(s);
 k:=0;
  for i:=1 to length(s) do
  begin
   if s[i]='(' then k:=k+1;
   if s[i]=')' then k:=k-1;
  end;
 if k=0 then begin writeln('YES') else writeln('NO');
 readkey;
end.