Турбо Пролог

  • Автор темы jana22
  • Дата начала
J

jana22

Написать программу для нахождения максимального элемента дерева.Вот я попыталась решить ее, но мне выдает ошибку в описании , где уже ищет максимальный элемент!Помогите где моя ошибка?
Код:
DOMAINS
tree=tr(integer,tree,tree);nil
PREDICATES
derevo(tree)
max(tree,integer,integer)
CLAUSES
derevo(tr(X,L,R)):-
readint(X),X<>0,derevo(L),derevo®,!.
derevo(nil):-!.
max(tr(A,B),A):-A>=B,!.
max(tr(_,B),B).

max(tr(N,nil,nil),N).
max(tr(F,L,R),F):-max(L,K),max(R,M),N>K,N>M.!.
max(tr(_,L,R),K):-max(L,K),max(R,M),K>M,!.
max(tr(_,_,R),M):-max(R,M).

GOAL
write("vvedite derevo"),nl,
derevo(tr(X,L,R)),nl,
write("Max= ",max)
 
R

rrrFer

да все криво )
Код:
max(A, B, A):- A > B, !. max(_, B, B).
твое правило Мб и должно работать, но мне вот эти условия ненравяца: N>K,N>M.!. (тут может ломаца, ИМХО)

Добавлено:
Код:
max(tr(V, nil, nil), V):-!.
max(tr(V, nil, R), X):- max(R, RM), max(V, RM, X).
max(tr(V, L, nil), X):- max(L, LM), max(V, LM, X).
max(tr(V, L, R), X):- max(L, LM), max(R, RM), max(V, LM, TX), max(TX, RM, X).

не првоерял, могут быть опечатки
 
T

Thrillseeker

да все криво )
Код:
max(A, B, A):- A > B, !. max(_, B, B).
твое правило Мб и должно работать, но мне вот эти условия ненравяца: N>K,N>M.!. (тут может ломаца, ИМХО)

Добавлено:
Код:
max(tr(V, nil, nil), V):-!.
max(tr(V, nil, R), X):- max(R, RM), max(V, RM, X).
max(tr(V, L, nil), X):- max(L, LM), max(V, LM, X).
max(tr(V, L, R), X):- max(L, LM), max(R, RM), max(V, LM, TX), max(TX, RM, X).

не првоерял, могут быть опечатки

Может Вы и мне помочь сможете?
 
X

xakeruga30

Код:
max(tr(V, nil, nil), V):-!.
max(tr(V, nil, R), X):- max(R, RM), max(V, RM, X).
max(tr(V, L, nil), X):- max(L, LM), max(V, LM, X).
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!