Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с предикатами и доменами, пожалуйста 
:(
    Опции темы
xmod
  Дата 8.3.2009, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нужно организовать работу в двоичнотроичном справочнике. Клаузы уже написаны, но что б они заработали нужно правильно описать предикаты и домены. Вот я написал, но программа на них ругается. 

Подправьте, пожалуйста, а то я уже неделю бьюсь, а все никак не получается...

Код

DOMAINS
X=integer
Tree=nil;l(X);n2( Tree, X, Tree);n3( Tree, X, Tree, X, Tree)
        /* дерево либо пусто, либо
         состоит из корня (целого числа),
         левого и правого поддеревьев,
         также являющихся деревьями */



predicates
add23( Tree, X, Tree)
ins( Tree, X, Tree)
ins( Tree, X, Tree, X, Tree)
ins( n2( Tree, X , Tree), X, n2( Tree, X, Tree))
del23( Tree, X, Tree)
show(Tree)
show(Tree,X)
gt ( X, X)


clauses

gt( X, Y) :- Х>У.

%  Figure 10.6  Inserting and deleting in the 2-3 dictionary.
%  In this program, an attempt to insert a duplicate item will fail.


% Insertion in the 2-3 dictionary

add23( Tree, X, Tree1)  :-                  % Add X to Tree giving Tree1
   ins( Tree, X, Tree1).                    % Tree grows in breadth

add23( Tree, X, n2( T1, M2, T2))  :-        % Tree grows upwards
   ins( Tree, X, T1, M2, T2).

del23( Tree, X, Tree1)  :-                  % Delete X from Tree giving Tree1
   add23( Tree1, X, Tree).

ins( nil, X, l(X)).

ins( l(A), X, l(A), X, l(X))  :-
   gt( X, A).

ins( l(A), X, l(X), A, l(A))  :-
   gt( A, X).


ins( n2( T1, M , T2), X, n2( NT1, M, T2))  :-
   gt( M, X),
   ins( T1, X, NT1).


ins( n2( T1, M, T2), X, n3( NT1a, Mb, NT1b, M, T2))  :-
   gt( M, X),
   ins( T1, X, NT1a, Mb, NT1b).


ins( n2( T1, M, T2), X, n2( T1, M, NT2))  :-
   gt( X, M),
   ins( T2, X, NT2).

ins( n2( T1, M, T2), X, n3( T1, M, NT2a, Mb, NT2b))  :-
   gt( X, M),
   ins( T2, X, NT2a, Mb, NT2b).


ins( n3( T1, M2, T2, M3, T3), X, n3( NT1, M2, T2, M3, T3))  :-
   gt( M2, X),
   ins( T1, X, NT1).

ins( n3( T1, M2, T2, M3, T3), X, n2( NT1a, Mb, NT1b), M2, n2( T2, M3, T3)) :-
   gt( M2, X),
   ins( T1, X, NT1a, Mb, NT1b).


ins( n3( T1, M2, T2, M3, T3), X, n3( T1, M2, NT2, M3, T3))  :-
   gt( X, M2), gt( M3, X),
   ins( T2, X, NT2).

ins( n3( T1, M2, T2, M3, T3), X, n2( T1, M2, NT2a), Mb, n2( NT2b, M3, T3)) :-
   gt( X, M2), gt( M3, X),
   ins( T2, X, NT2a, Mb, NT2b).


ins( n3( T1, M2, T2, M3, T3), X, n3( T1, M2, T2, M3, NT3))  :-
   gt( X, M3),
   ins( T3, X, NT3).

ins( n3( T1, M2, T2, M3, T3), X, n2( T1, M2, T2), M3, n2( NT3a, Mb, NT3b))  :-
   gt( X, M3),
   ins( T3, X, NT3a, Mb, NT3b).




%  Figure  10.7  A program to display a 2-3 dictionary.


% Displaying 2-3 dictionary

show(T)  :-
   show(T,0).

show( nil, _).

show(l(A),H)  :-
   tab(H), write(A), nl.

show( n2( T1, M, T2), H)  :-
   H1 is H+5,
   show( T2, H1),
   tab(H), write(--), nl,
   tab(H), write(M), nl,
   tab(H), write(--), nl,
   show( T1, H1).

show( n3( T1, M2, T2, M3, T3), H)  :-
   H1 is H+5,
   show( T3, H1),
   tab(H), write(--), nl,
   tab(H), write(M3), nl,
   show( T2, H1),
   tab(H), write(M2), nl,
   tab(H), write(--), nl,
   show( T1, H1).

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

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

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


 




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


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

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