|
11 / 11 / 5
Регистрация: 25.11.2011
Сообщений: 147
|
|
Проверка на расстановку скобок09.09.2013, 15:06. Показов 15412. Ответов 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
Проверка правильности расстановки скобок Проверка правильности расстоновки скобок Работа со строками в С++ проверка на согласованность скобок Проверка правильности расстановки скобок в строке Работа со строками на С++ проверка на согласованность скобок. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|