В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
kaban229
kaban229
29.03.2020 20:27 •  Информатика

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

Показать ответ
Ответ:
luda12349
luda12349
02.10.2020 16:19
Есть простой подсчета парности скобок. Инициализируем счетчик нулем, а затем читаем строку. Если встречается открывающая скобка, в счетчик посылается +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
0,0(0 оценок)
Ответ:
linapetrenko
linapetrenko
02.10.2020 16:19
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.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота