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

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

Ответы 2

  • 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))  endend.Тестовое решение:Введите строку: (3*k+1/(c-5)*a;Обнаружено непарных открывающих скобок: 1
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years