Паскаль Дано рядок, що містить кілька круглих дужок. Якщо дужки
розставлені правильно (тобто кожній відкритій відповідає одна закрита), то
вивести число 0. В іншому випадку вивести або номер позиції, в якій
розташована перша хибна дужка, що закриває, або, якщо закриваючих дужок не вистачає, число -1.
на Русском Дана строка, содержащая несколько круглых скобок. Если скобки
расставлены правильно (т.е. каждой открытой соответствует одна закрытая), то
вывести число 0. В противном случае вывести или номер позиции, в которой
расположена первая закрывающая ложная скобка или, если закрывающих скобок не хватает, число -1.
Ответы
Ответ дал:
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.
Вас заинтересует
1 год назад
1 год назад
1 год назад
2 года назад
8 лет назад