![]() |
|
|
![]()
|
|
| lolli |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 6.10.2011 Репутация: нет Всего: нет |
Всем привет! Есть программа - Задание: определить длину (число ветвей) пути от корня дерева до ближайшей вершины с заданным значением, если такая вершина отсутствует, ответ- "-1"
Вот код: domains list=integer*. tree=der(tree,integer,tree); nil. predicates inside(integer,tree,list). add(list). derevo(list,tree,integer,list). create_kor_der(list,tree). konk(list,list,list). dobav(tree,integer,tree). del(list,list). count(list,integer,integer). clauses add([H|T]):-readint(H),H<>0,add(T),!. add([]). del([_|T],T). konk([],L,L). konk([X|L1],L2,[X|L3]):-konk(L1,L2,L3). dobav(nil,X,der(nil,X,nil)). dobav(der(L,X,R),X,der(L,X,R)). dobav(der(L,Kor,R),X,der(L1,Kor,R)):- Kor>=X, dobav(L,X,L1). dobav(der(L,Kor,R),X,der(L,Kor,R1)):- X>Kor, dobav(R,X,R1). create_kor_der([H1|_],T1):- dobav(nil,H1,T1). inside(X,der(_,X,_),[X]). inside(X,der(L,Kor,_),[Kor|Put]):- Kor>X, inside(X,L,Put). inside(X,der(_,Kor,R),[Kor|Put]):- X>Kor, inside(X,R,Put). count([_|T],N,NN):-N1=N+1,count(T,N1,NN). count([],N,N). derevo([H1|T1],Tr,E,Spisok):- H1=0, inside(E,Tr,Spisok); H1<>0, dobav(Tr,H1,Tr1), derevo(T1,Tr1,E,Spisok). goal clearwindow, write("Enter Tree:\n"), add(L), write(L),nl, konk(L,[0],L1), create_kor_der(L1,T), del(L1,L2), write("Enter Element:\n"), readint(E), derevo(L2,T,E,Spi), N=-1, count(Spi,N,NN), write("dlina min puti = ",NN); write("element ne naiden!"). Помогите пожалуйста переделать прогу, так чтобы эллементы дерева ввести непосредственно в коде, а не с клавиатуры (5-6 эллементов), дело в том что преподаватель очень жестко спрашивает по коду, а так половина проги срезается. Заранее благодарю всех. Счастливо! |
|||
|
||||
![]()
|
| Правила форума Prolog | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Prolog | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |