Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
2 / 2 / 0
Регистрация: 10.08.2013
Сообщений: 73

Проверка правильности расстановки скобок в строке

23.11.2014, 04:24. Показов 4443. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, с программированием пока еще далеко не на "ты". Не пойму как определить функции, которые проверяют правильность расстановки скобок в строке, т.е если есть открывающая, то должна быть и закрывающая. Функция принимает строку и выдает булево значение. Помогите пожалуйста с кодом или хотя бы подскажите, в какую сторону писать программу.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.11.2014, 04:24
Ответы с готовыми решениями:

Предикат, проверяющий правильность расстановки скобок в исходной строке
Создайте предикат, проверяющий правильность расстановки скобок в исходной строке.

Проверка правильности расстановки скобок в строке
Проверка строки на правильность написания То есть (5-6)*(5-6) правильно )5-6(*(5-6) неправильно

Проверка правильности расстановки скобок в строке (рекурсия)
Помогите написать рекурсивную функцию, проверяющую правильность расстановки скобок в строке. Правильные скобочные структуры: () ({}) ...

24
2 / 2 / 0
Регистрация: 10.08.2013
Сообщений: 73
28.11.2014, 18:05  [ТС]
Студворк — интернет-сервис помощи студентам
Большое спасибо всем, разобрался! До рекурсии просто только только вот дошёл в учебнике!
0
275 / 50 / 2
Регистрация: 10.10.2017
Сообщений: 54
17.03.2018, 17:06
Оффтопик, но все же. Учу haskell и вот что получилось

Haskell
1
2
3
4
5
6
7
8
check = _check 0
 
_check n xs
  | n < 0 = False
  | xs == "" && n /= 0 = False
  | xs == "" = True
  | head xs == '(' = _check (n + 1) (tail xs)
  | head xs == ')' = _check (n - 1) (tail xs)
Я так понимаю, это хвостовая рекурсия.
0
Модератор
 Аватар для Curry
5171 / 3536 / 536
Регистрация: 01.06.2013
Сообщений: 7,691
Записей в блоге: 9
17.03.2018, 17:30
Цитата Сообщение от hardentoo Посмотреть сообщение
Я так понимаю, это хвостовая рекурсия.
Хвостовая, но вы перебрали не все возможные варианты. Что делать если следующий символ не скобка.
От head и tail можно избавиться используя (x:xs) в образце (слева от =).
Из двух строк можно сделать одну.
Если функция _check больше нигде не используется то её лучше вложить в check .
Ну и задать декларацию функции, т.е. типы аргументов и результата.
0
275 / 50 / 2
Регистрация: 10.10.2017
Сообщений: 54
17.03.2018, 18:03
Я предполагал, что в строке только скобки. А вот так

Haskell
1
2
3
4
5
6
7
8
checkBra = _checkBra 0
 
_checkBra (-1) _ = False
_checkBra n [] = n == 0
_checkBra n (x:xs)
  | x == '(' = _checkBra (n + 1) xs
  | x == ')' = _checkBra (n - 1) xs
  | otherwise = _checkBra n xs
1
Модератор
 Аватар для Curry
5171 / 3536 / 536
Регистрация: 01.06.2013
Сообщений: 7,691
Записей в блоге: 9
17.03.2018, 20:13
hardentoo, можно вообще от охранных выражений избавиться. Не то что бы это нужно, но можно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.03.2018, 20:13

Проверка правильности расстановки скобок
Задача Bracket. В сложных математических выражениях приходится иногда ставить много скобок. Часто бывает трудно посчитать, сколько скобок...

Проверка правильности расстановки скобок
Преподаватель поставила сегодня в тупик вопросом. Как с помощью оператора выбора Case проверить правильность расстановки скобок ? ...

Проверка правильности расстановки скобок
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include&lt;locale.h&gt; struct stack { int size;//размер стека char * st;//добавляем...

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

Проверка правильности расстановки скобок
В арифметическом выражении, записанном в одну строку, есть круглые, квадратные и фигурные скобки. Верно записано выражение?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru