|
11 / 11 / 5
Регистрация: 25.11.2011
Сообщений: 147
|
|
Проверка на расстановку скобок09.09.2013, 15:06. Показов 15327. Ответов 12
Метки нет (Все метки)
В общем задание такое.
Программа (консольная) проверяет каждую строку файла для проверки на расстановку скобок 4 типов ("(" и ")", "[" и "]", "{" и "}", "<" и ">"), проверка должна учесть парность и вложенность расстановки скобок (как в математических выражениях), другие символы - пропускать без обработки. По результатам проверки формируется файл результатов, каждая строка которого соответствует строке файла для проверки, результат в строке может быть описан как - "нет ошибок", "ошибка в символе N" (N - порядковый номер символа в строке). Подскажите как лучше это организовать.
0
|
|
| 09.09.2013, 15:06 | |
|
Ответы с готовыми решениями:
12
Проверка строки на правильную расстановку скобок
|
|
26 / 26 / 0
Регистрация: 10.03.2010
Сообщений: 248
|
|
| 09.09.2013, 15:13 | |
|
в цикле ищем скобку begin если находим то с следующей позиции ищем скобку end, если нет скобки end то error
0
|
|
|
11 / 11 / 5
Регистрация: 25.11.2011
Сообщений: 147
|
||
| 09.09.2013, 15:27 [ТС] | ||
|
Пример: ( [ { < > } ] ) результат - true а ( [ < { ] > } ) результат - false. Пример: ((( )( ))( )), результат – true; )(((())), результат – false. Пример: {}[]()(()[]) результат – true; Пример: (}{), результат – false.
0
|
||
|
Неэпический
|
|
| 09.09.2013, 15:31 | |
|
1
|
|
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||
| 09.09.2013, 15:34 | ||
|
- встретилась открывающая скобочка - записать ее в соответствующий стек. - встретилась закрывающая скобочка - проверить есть ли в соответствующем стеке предыдущая открывающая скобочка. Если есть, то вычесть одну. Если нет, то ошибка разбора.
1
|
||
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
| 09.09.2013, 15:58 | |
|
Хм, пожалуй, нет. Стек должен быть один. Иначе с четырьмя стеками возможна ситуация:
([)] - считается, что расстановка скобок правильная, а это не так.
0
|
|
|
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
|
||
| 09.09.2013, 16:01 | ||
|
0
|
||
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
||
| 09.09.2013, 16:10 | ||
|
Нет. Вот смотри, если руководствоваться изложенными правилами:
Берем первую скобку: ( - она открывающая. По п.1 помещаем ее в стек - например, s1. Берем вторую скобку: [ - она тоже открывающая, помещаем ее в стек s2. Итого: s1 содержит (, s2 содержит [, стеки s3 и s4 пока пусты. Разбираем строку дальше: третья скобка ) - закрывающая. По правилу п.2 выбираем открывающую скобку из стека s1 - открывающая скобочка там как раз есть. Разбираем следующую скобку: ] - закрывающая, поэтому выбираем открывающую скобочку из стека s2 - она там как раз есть. Строка закончена. Все стеки у нас пусты. Вывод: скобки расставлены правильно. А на самом деле это не так!
1
|
||
|
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
|
|
| 09.09.2013, 16:15 | |
|
значит используем 1 стек, и заносим тип скобки
0
|
|
|
31 / 17 / 5
Регистрация: 18.07.2013
Сообщений: 220
|
|
| 04.09.2014, 12:25 | |
|
А если усложнить задачу наличием разделителя ','. Между двумя ',' скобки должны быть растравлены правильно, а также количество открывающих и закрывающих равны. ',' нельзя поставить вне блока скобок. между открывающей или закрывающей блок скобки и ',' действует тоже правило на скобки, что на случай между двумя ','
0
|
|
|
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
|
||
| 04.09.2014, 12:34 | ||
|
Archi0,
0
|
||
|
31 / 17 / 5
Регистрация: 18.07.2013
Сообщений: 220
|
|
| 04.09.2014, 13:17 | |
|
ну типа функции в строке. Неверно описал задачу, так как между двумя ',' может быть другая функция.
0
|
|
|
Модератор
|
|
| 04.09.2014, 14:20 | |
|
0
|
|
| 04.09.2014, 14:20 | |
|
Помогаю со студенческими работами здесь
13
Проверка правильности расстановки скобок Проверка правильности расстоновки скобок Работа со строками в С++ проверка на согласованность скобок Проверка правильности расстановки скобок в строке Работа со строками на С++ проверка на согласованность скобок. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|