Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Трабла с реализацией алгоритма, проверка соответствия строки шаблону 
:(
    Опции темы
BreakPointMAN
  Дата 16.5.2005, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: нет
Всего: 24



Вообщем, если кто-нибудь что-то может посоветовать, как энто реализовать - буду премного благодарен... ))

Требуется написать класс (c++ -> Builder 6, если кому интересно... но это не суть важно), конструктор которого принимает шаблонную строку особого вида (формат которой описан ниже), и в котором имеется функция, принимающая некую строку и проверяющую ее на соответствие шаблону. Функция должна возвращать -1, если в переданной ей строке нет подстрок, отвечающих требованию шаблона, либо смещение, указывающее на начало подходящей подстроки.

Формат шаблона следующий:

\xHH - задает ASCII-код символа в 16-ричном виде;
(\xHH-\xHH) - задает символ, ASCII-код которого находится в заданном диапазоне
[] - задает список необязательных элементов
{} - задает список обязательных элементов

Т.е., если отвлечься от того, что символы задаются с помощью 16-ричных кодов в виде \xHH, где H- шестнадцатеричная цифра, и опустить задание диапазона ASCII-кодов символа, то шаблон может выглядеть примерно так:

"[a]{b|cd}[ef{g|[h]i}]"

и ему соответствуют строки:

ab
acd
b
cd


abefg
abefi
abefhi

acdefg
acdefi
acdefhi

befg
befi
befhi

cdefg
cdefi
cdefhi

Как можно реализовать это дело? Через дерево? Тогда как его строить и как обходить? Через автоматы? А с чем это дело едят?.. .......... вариант "использовать готовую библиотеку для работы с рег.выр." не совсем подходит, хотя бы потому что интересно разобраться самому в том, как оно работает...


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
SoWa
Дата 17.5.2005, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Циклы, Парсинг, поиск в тексте, куча условий. Вот и все!
Разбираешь все группы элементов, потом сравниваешь с входными


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
BreakPointMAN
Дата 20.5.2005, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: нет
Всего: 24



Ну-ну... а как прикажешь быть со вложенностью скобок? Причем возможно многократной? Да если скобок здесь два вида - для задания просто перечисления и для задания необязательных элементов?

А как быть с шаблонами вида: "[a]{a|b|c}"? Строка "a" здесь подходит, верно? А как реализовать проверку, чтобы она на таком тесте не завалилась?


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
Sardar
Дата 21.5.2005, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 1
Всего: 317



BreakPointMAN контекстно-свободная грамматика тебя выручит в любом случае smile
http://softcraft.ru


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
BreakPointMAN
  Дата 24.5.2005, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: нет
Всего: 24



Цитата(Sardar @ 21.5.2005, 00:16)
BreakPointMAN контекстно-свободная грамматика тебя выручит в любом случае smile
http://softcraft.ru

Спасибо, очень интересный ресурс! smile


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1021 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.