Лабораторная работа № 5
ДЕРЕВЬЯ
№ 9.Подсчитать число вершин дерева, значения которых лежат в определенном задаваемом диапазоне.
domains
treetype = tree (integer, treetype, treetype); empty ()
predicates
print(treetype,integer)
clauses
print(empty,0).
print(tree(X, Z, Y),COUNT):-
X>0,X<50,
COUNT1=COUNT+1,
write(COUNT,"- вершин "),
write(X), nl,
print(Z,COUNT1),
print(Y,COUNT1).
goal
write("Диапозон 0...50:"),nl,
print(tree (25,tree (5,tree (1,tree (5,tree (8, empty, empty), tree(11, empty, empty)), empty), empty),tree(70,tree(67,empty,empty),tree (122, empty, empty))),1),nl,fail;true.
domains
inttree = tree(integer,inttree,inttree); end
predicates
nondeterm do(inttree)
action(integer,inttree,inttree)
create_tree(inttree,inttree)
insert(integer,inttree,inttree)
write_tree(inttree)
sumtree(inttree,integer)
nondeterm repeat
clauses
do(Tree):-
repeat,nl,
write("*******************************************************"),nl,
write("Введите 1 для изменения дерева\n"),
write("Введите 2 для вывода дерева\n"),
write("Введите 3 для вывода суммы\n"),
write("Введите 999 для выхода из программы\n"),
write("*******************************************************"),nl,
write("Enter number - "),
readint(X),nl,
action(X, Tree, NewTree),
do(NewTree).
action(1,Tree,NewTree):-
write("Введите 999 для окончания ввода\n"),
create_Tree(Tree, NewTree).
action(2,Tree,Tree):-
write_Tree(Tree),
write("\nPress a key to continue"),
readint(_),nl.
action(3,Tree,Tree):-
sumtree(Tree, Sum),
write("Сумма вершин дерева равна ", Sum, "\n"),
write("\nPress a key to continue").
action(999, _, end):-
exit.
create_Tree(Tree, NewTree):-
readint(C),
C<>999,!,
insert(C, Tree, TempTree),
create_Tree(TempTree, NewTree).
create_Tree(Tree, Tree).
insert(New,end,tree(New,end,end)):-!.
insert(New,tree(Element,Left,Right),tree(Element,NewLeft,Right)):-
New