Турбо Пролог

jana22

New Member
16.04.2013
1
0
#1
Написать программу для нахождения максимального элемента дерева.Вот я попыталась решить ее, но мне выдает ошибку в описании , где уже ищет максимальный элемент!Помогите где моя ошибка?
Код:
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

Гость
#2
да все криво )
Код:
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).
не првоерял, могут быть опечатки
 
21.04.2013
4
0
#3
да все криво )
Код:
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).
не првоерял, могут быть опечатки
Может Вы и мне помочь сможете?
 

xakeruga30

New Member
29.07.2013
1
0
#4
Код:
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).