Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Список, элементы которого – непустые бинарные дере 
:(
    Опции темы
aki295
Дата 18.12.2011, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Имеется вот такое задание: Имеется список, элементы которого – непустые бинарные деревья. Для каждого элемента списка найти среднее арифметическое положительных узлов дерева, из полученных результатов сформировать список (без использования стандартного предиката findall). Для полученного списка подсчитать количество элементов списка без какого-либо указываемого элемента.

 Что-то нашел здесь, что-то доделал, вообщем в итоге получилось вот это:
Код

domains
 treetype = tree(integer, treetype, treetype); empty
 treelist = treetype*
 rlist = real*
 intlist=integer*
 
predicates
determ summ(treetype, integer, integer)
determ gotolist(treelist, rlist)
list_length (rlist, integer, integer)
check(real, integer, integer)
 
clauses
 
check(Number, Number, 0):-
!.
check(_, _, 1).
 
list_length ([ ], _, 0):- !.
 
list_length ([H | T], Number, Length):- list_length(T, Number, Length_T), 
check(Number, H, Result), Length = Length_T + Result.
 
 gotolist([H|T], [Arif|Rest]):-
 summ(H, Sum, C), 
 Arif = Sum/C,
 gotolist(T, Rest).
 gotolist([], []).
 
 summ(tree(Root, empty, empty), Root, 1):- !.
 summ(tree(_,empty, Right), Sum, C):-!,
 summ(Right, Sum, C).
 summ(tree(_, Left, empty), Sum, C):-!,
 summ(Left, Sum, C).
 summ(tree(_, Left, Right), Sum, C):-
 summ(Left, L, A), 
 summ(Right, R, B),
 Sum = L+R, 
 C = A+B.
 
GOAL
gotolist([tree(10, tree(3, empty, empty), empty),
 tree(-1, empty, tree(-9, empty, empty)),
 tree(2, tree(0, empty, empty), 
 tree(5, empty, empty))], L),
list_length(L, 2, Result),
write(Result), write(L).


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

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

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


 




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


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

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