Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2014, 13:52   #1
Common_bottom
Новичок
Джуниор
 
Регистрация: 15.05.2014
Сообщений: 1
Печаль Не компиллируется прога - ошибка в объявлении переменных?

Имеется программа на Visual Prolog 5.2, реализующая составление кроссворда из заданных слов. Но при попытке ее скомпиллировать в Visual Prolog 7.3 выдает 2 ошибки без описания - пишет лишь "Syntax Error". Предполагаю, что проблема в объявлении типов списков и одной строковой переменной.

P. S. Очень плохо знаю пролог - занимался им около полугода назад, уже все забыл(( Помогите, пожалуйста, кого не затруднит - напишите, как исправить код. Заранее премного благодарен!
Код:
implement main
    open core,console
 
domains
sl=symbol*
sll=sl*
ls=string*
lls=ls*
пара=п(symbol,string)
пары=пара*
facts
слово(string)
predicates
nondeterm найти(sll,ls)
nondeterm кроссворд(sll,пары,ls,ls) 
nondeterm взять(string,ls,ls)
слово_сп(string,ls) 
принадл(пара,пары)
соотв(sl,ls,пары,пары)
goal 
Кроссворд=[[x1,x2,x3,x4,x5],[x9,x10,x11,x12,x13],[x17,x18,x19,x20,x21],
[x1,x6,x9,x14,x17],[x3,x7,x11,x15,x19],[x5,x8,x13,x16,x21]],
найти(Кроссворд,Ответ).
clauses
слово("казак"). слово("роман"). слово("бокал"). слово("короб"). 
слово("замок"). слово("канал"). слово("шёпот"). слово("шляпа").
слово("ягода"). слово("просо"). слово("тракт"). слово("апорт").
слово("машина").
 
найти(Кроссворд,Ответ):- findall(S,слово(S),Словарь),
    кроссворд(Кроссворд,[],Ответ,Словарь).
 
кроссворд([],_,[],_):- !.
кроссворд([L|LL],Соотв,[Слово|Ответ],Словарь):- 
    взять(Слово,Словарь,Словарь1),
    слово_сп(Слово,Буквы),соотв(L,Буквы,Соотв,Соотв1),
    кроссворд(LL,Соотв1,Ответ,Словарь1).
 
взять(S,[S|L],L).
взять(S,[A|L],[A|L1]):- взять(S,L,L1).
 
принадл(S,[S|_]):- !.
принадл(S,[_|L]):- принадл(S,L).
 
соотв([С|L],[Б|L1],Соотв,Соотв1):- 
    принадл(п(С,Б),Соотв),!,соотв(L,L1,Соотв,Соотв1).
соотв([С|L],[Б|L1],Соотв,Соотв1):- 
    not(принадл(п(С,_),Соотв)),соотв(L,L1,[п(С,Б)|Соотв],Соотв1).
соотв([],[],Соотв,Соотв).
 
слово_сп(Str,[Б|L]):- frontstr(1,Str,Б,Str1),!,слово_сп(Str1,L).
слово_сп(_,[]).

Последний раз редактировалось Stilet; 15.05.2014 в 13:54.
Common_bottom вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в объявлении функции aank10 Общие вопросы C/C++ 1 09.07.2013 15:00
deque. Ошибка при объявлении итератора 8Observer8 Общие вопросы C/C++ 10 26.01.2013 00:31
Ошибка при объявлении переменных mishev Общие вопросы C/C++ 20 23.08.2012 20:19
Ошибка при объявлении файла записей bogdanidze Помощь студентам 2 13.05.2011 08:26
Ошибка в объявлении переменных Superlotles Помощь студентам 1 17.12.2009 17:05