|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.05.2010, 05:48 | #1 |
Форумчанин
Регистрация: 18.02.2010
Сообщений: 164
|
Не получается сделать генератор скобочных варажений содержащее по 5 правых 5 левых скобок пример:
Верно: ()()()()() (()()()()) ()(()()()) Не верно: )(()()())( Самый не хитрый способ, полный перебор. А потом смотреть что скобки стоят верно. Т.е. понадобится две вещи: 1. Генератор последовательностей скобок. 2. Проверяющий эти последовательности на уникальность и правильность. 2 я сделеал только при условии что пользователь вводит, а мне нужно сделать генератор этих выражений подскажите буду благодарен.. с генерацией вроде все ясно вот код Код:
подскажите как ?? Последний раз редактировалось Stilet; 17.05.2010 в 08:41. |
17.05.2010, 08:43 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
По теме: когда-то кто-то мне говорил что лучший механизм такого парсинга - через конечные автоматы... Не проверял, но думаю на твоем месте именно в эту сторону бы и порыл...
I'm learning to live...
|
|
17.05.2010, 09:45 | #3 |
Форумчанин
Регистрация: 18.02.2010
Сообщений: 164
|
Хм, интересно , но что то разобратся не могу , может поможешь приведи пример если не сложно ?
|
17.05.2010, 10:18 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Увы сложно
Я никогда не утруждал себя разборами такого рода да и КА в универе не любил...
I'm learning to live...
|
17.05.2010, 12:01 | #5 |
Форумчанин
Регистрация: 18.02.2010
Сообщений: 164
|
Не ужели проще нельзя ?
|
17.05.2010, 12:13 | #6 | |
Временно — юрист.
Форумчанин
Регистрация: 31.03.2008
Сообщений: 204
|
Цитата:
Вобщем наводка: надо использовать для проверки правильности выражения стек. Подумай пока в этом направлении. Короче, до конца дня наверное соображу что к чему. А то в условиях расслабона голова не так работает, как в экстримальных))) |
|
17.05.2010, 12:15 | #7 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Для проверки правильности расстановки скобок может проще поступить следующим образом:
Создаём счетчик скобок. Изначально он равен нулю. Потом при появлении открывающейся скобки, мы этот счетчик увеличиваем на единицу. Ну и уменьшаем на единицу в случае закрывающейся скобки. Если в какой-то момент времени счетчик стал отрицательным, значит лишняя закрывающаяся скобка. Если строка кончилась, а счетчик не равен нулю, значит не закрыта одна или несколько открывающихся скобок (по счетчику легко узнать их количество). |
17.05.2010, 12:28 | #8 |
Временно — юрист.
Форумчанин
Регистрация: 31.03.2008
Сообщений: 204
|
Аа, действительно, какой стек? Тут же не надо проверять соответствие скобок между собой.
|
17.05.2010, 14:52 | #9 |
Форумчанин
Регистрация: 18.02.2010
Сообщений: 164
|
Эх что то я сглупил , спасибо за подробное описание
Еще не большой вопросу как можно грамотнее сделать генератор нужных мне выражений ? Последний раз редактировалось Stilet; 18.05.2010 в 13:41. |
17.05.2010, 17:57 | #10 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
преобразование выражений | alexander-57n | Помощь студентам | 0 | 16.05.2010 14:33 |
вычисление арифметических выражений на с++ | Euforia_PZAS09_1 | Помощь студентам | 1 | 09.03.2010 17:40 |
Парсер математических выражений | Granus | Общие вопросы Delphi | 3 | 24.06.2009 15:19 |
условие в построителе выражений! | SKIF_SPB | Microsoft Office Access | 3 | 25.12.2008 14:07 |
Решение простых выражений | MStorm | Помощь студентам | 5 | 10.03.2008 14:34 |