Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программа-распознаватель цепочек, удовлетворяющих 
:(
    Опции темы
Рыся
  Дата 22.1.2013, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нужно создать программу-распознаватель цепочек, удовлетворяющих шаблону, используя в качестве базового механизма грамматику, порождающую язык, заданный шаблоном.
(ad)*(x|f)+re(tw)* 
Код

include "1.inc"

domains
  lc = char*

predicates

 nondeterm s(lc,lc,integer,integer)
 nondeterm a(lc,lc,integer,integer)
 nondeterm b(lc,lc,integer,integer)
 nondeterm c(lc,lc,integer,integer)
 nondeterm d(lc,lc,integer,integer)
 nondeterm e(lc,lc,integer,integer)
 nondeterm sTol(string,lc,integer)



clauses

sTol("",[],0).
sTol(S,L,N):-frontchar(S,C,X),
                 sTol(X,L1,N1),
                 L=[C|L1],
                 N=N1+1.

s(Si,S0,M,N):-M<=N, 
              M1=M+1,
              a(Si,S1,M1,N),
              b(S1,S2,M1,N),
              c(S2,S3,M1,N),
              d(S3,S4,M1,N),
              e(S4,S0,M1,N); 
              M<=N, 
              M1=M+1,
              b(Si,S1,M1,N),
              c(S1,S2,M1,N),
              d(S2,S3,M1,N),
              e(S3,S0,M1,N);
               M<=N, 
              M1=M+1,
              a(Si,S1,M1,N),
              b(S1,S2,M1,N),
              c(S2,S3,M1,N),
              d(S3,S0,M1,N);
               M<=N, 
              M1=M+1,
              b(Si,S1,M1,N),
              c(S1,S2,M1,N),
              d(S2,S0,M1,N).
           
              

 a(Si,S0,M,N):-M<=N,
               Si=['a','d'|S0];
               M<=N,
               M1=M+1,
               Si=['a','d'|S1],
               a(S1,S0,M1,N).
 
 b(Si,S0,M,N):-M<=N,
               Si=['x'|S0];
               M<=N,              
               Si=['f'|S0];
               M<=N,
               M1=M+1,
               Si=['x'|S1],
               c(S1,S0,M1,N);
               M<=N,
               M1=M+1,
               Si=['f'|S1],
               c(S1,S0,M1,N).
               
 c(Si,S0,M,N):-M<=N,
               Si=['r'|S0];
               M<=N,
               M1=M+1,
               Si=['r'|S1],
               d(S1,S0,M1,N).
          
               
               
 d(Si,S0,M,N):-M<=N,
               Si=['e'|S0];
               M<=N,
               M1=M+1,
               Si=['e'|S1],
               d(S1,S0,M1,N).
               
 e(Si,S0,M,N):-M<=N,
               Si=['t','w'|S0];
               M<=N,
               M1=M+1,
               Si=['t','w'|S1],
               e(S1,S0,M1,N).
 
 goal 
                 write("Vvedite sroku: "),
                 readln(S),
                 sTol(S,L,N),
                 s(L,[],0,N),
                 write("pravil'naya stroka");
                 write("nepravil'naya stroka").

При вводе, например, строки xxxfffxfre, пишет неправильная строка, что неверно. Как сделать правильно?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума Prolog
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

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

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


 




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


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

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