Написать исходный код в Pascal-е.Решить задачу по обработке строковых данных с использованием подпрограмм: В строке, среди знаков могут встречаться открывающие и закрывающие скобки. Проверить с помощью подпрограммы равенство чи...

Написать исходный код в Pascal-е. Решить задачу по обработке строковых данных с использованием подпрограмм: В строке, среди знаков могут встречаться открывающие и закрывающие скобки. Проверить с помощью подпрограммы равенство числа открывающихся скобок числу закрывающихся.
Гость
Ответ(ы) на вопрос:
Гость
var   str:string;   i, n9, n0:integer; begin   readln(str);   for i:=1 to Length(str) do     if str[i] = '(' then       n9 := n9 + 1     else       if str[i] = ')' then         n0 := n0 + 1;   if n9 = n0 then     writeln('Число открывающихся скобок равно числу закрывающихся')   else     writeln('Число открывающихся скобок не равно числу закрывающихся'); end.
Гость
Есть простой способ подсчета парности скобок. Инициализируем счетчик нулем, а затем читаем строку. Если встречается открывающая скобка, в счетчик посылается +1, если закрывающая, то -1. После просмотра всей строки нулевое значение счетчика скажет нам о равенстве скобок, а ненулевое покажет количество лишних скобок. Каких именно - покажет знак. Попутно замечу, что подобные подсчеты не гарантирует проверки синтаксической правильности расстановки скобок, например, выражение )a+b( синтаксически неверно, но в нем "правильное" количество скобок. var   i,k:integer;   s:string; begin   Write('Введите строку: '); Readln(s);   k:=0;   for i:=1 to Length(s) do   case s[i] of   '(':Inc(k);   ')':Dec(k)   end;   if k=0 then Writeln('Скобки парные')   else   begin     Write('Обнаружено непарных ');     if k>0 then Write('открывающих') else Write('закрывающих');     Writeln(' скобок: ',abs(k))   end end. Тестовое решение: Введите строку: (3*k+1/(c-5)*a; Обнаружено непарных открывающих скобок: 1
Не нашли ответ?
Ответить на вопрос
Похожие вопросы