Форум программистов, компьютерный форум, киберфорум
Наши страницы
Prolog
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Not_alone
2 / 2 / 0
Регистрация: 21.06.2010
Сообщений: 11
1

Сумма нечетных узлов дерева

24.06.2010, 21:22. Просмотров 1691. Ответов 5
Метки нет (Все метки)

Простите за наглость, но пролог дается мне очень тяжело, особенно деревья.
скажите пожалуйста, что нужно исправить в этой программе чтобы она считала сумму нечетных узлов (с нечетным значением).
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
domains
tree=nil;t(real,tree,tree)
 
predicates
n(tree,real,integer).
 
clauses
n(nil,0,0).
n(t(H,Left,Right),S,N):-n(Left,LeftSum,A),n(Right,RightSum,B),S=LeftSum+RightSum+H,N=A+B+1.
 
goal
Tree=t(5,t(3,t(7,nil,nil),nil),t(1,t(30,nil,nil),t(5,nil,nil))), Tree=t(_,Left,Right),
n(Tree,S,N),L=S/N,write(L,' '),nl.
Очень прошу помогите пожалуйста, зачет висит(((

Добавлено через 1 час 53 минуты
созрел пока только до этого(( дальше ступор((

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
domains
tree=nil;t(integer,tree,tree)
 
predicates
n(tree,real,integer).
 
clauses
n(nil,0,0).
n(t(H,Left,Right),S,N):-H mod 2=1,nl,write(H),nl,n(Left,LeftSum,A),n(Right,RightSum,B),S=LeftSum+RightSum+H,N=A+B+1.
 
goal
Tree=t(5,t(3,t(7,nil,nil),nil),t(1,t(30,nil,nil),t(5,nil,nil))),
n(Tree,S,N),L=S/N,write(L).
изменил тип t(integer,tree,tree) c real на integer(иначе ругается на Н при проверке на нечетность), проверил Н на нечетность, дальше что делать не знаю(( пожалуйста помогите
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2010, 21:22
Ответы с готовыми решениями:

Найти сумму значений узлов бинарного дерева, находящихся на нечетных уровнях
Помогите, пожалуйста с задачкой. :sorry: Найти сумму значений узлов бинарного...

Подсчет числа узлов и листья дерева
Посчитать число узлов и листья дерева

Найти количество узлов дерева, значения которых кратны 5
Работаю в SWI-Prolog. Полностью задача звучит так: Создать бинарное дерево...

Количество узлов дерева на заданной глубине. Arity Prolog
Условие:?- pred(s(f(b(m,k),a),t(a,w)),1,X). X = 1 ?-...

Сумма вершин дерева
Определите предикат tree_sum(T,S), так чтобы S равнялось сумме всех...

5
Грымзик
2478 / 1454 / 35
Регистрация: 14.09.2009
Сообщений: 2,742
24.06.2010, 22:03 2
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
domains
tree=nil;t(integer,tree,tree)
 
predicates
n(tree,integer).
 
clauses
n(nil,0).
n(t(H,Left,Right),S):-H mod 2=1,!,n(Left,LeftSum),n(Right,RightSum),S=LeftSum+RightSum+H.
n(t(_,Left,Right),S):-n(Left,LeftSum),n(Right,RightSum),S=LeftSum+RightSum.
 
goal
n(t(5,t(3,t(7,nil,nil),nil),t(1,t(30,nil,nil),t(5,nil,nil))),S),write(S).
2
Not_alone
2 / 2 / 0
Регистрация: 21.06.2010
Сообщений: 11
24.06.2010, 22:25  [ТС] 3
спасибо Вам большое. Скажите пожалуйста почему вместо
Prolog
1
Tree=t(5,t(3,t(7,nil,nil),nil),t(1,t(30,nil,nil),t(5,nil,nil))), n(Tree,S,N)
можно записать так:
Prolog
1
n((t(5,t(3,t(7,nil,nil),nil),t(1,t(30,nil,nil),t(5,nil,nil)))),S,N)
? и будет ли разница? вопрос глупый конечно,но все же, если вас не затруднит
0
Грымзик
2478 / 1454 / 35
Регистрация: 14.09.2009
Сообщений: 2,742
24.06.2010, 22:29 4
Нет, разницы никакой, ведь в первом случае просто дополнительная переменная используется, на самом деле не нужная, просто я хотела выделить где именно дерево, а то в этих скобках легко запутаться.
1
Not_alone
2 / 2 / 0
Регистрация: 21.06.2010
Сообщений: 11
24.06.2010, 22:32  [ТС] 5
просто преподаватель задал мне этот вопрос, я ответил ему так как вы сказали, но почему то я его не убедил) еще раз большое Вам спасибо.
0
rowest
7 / 7 / 0
Регистрация: 17.06.2013
Сообщений: 34
10.11.2013, 16:21 6
Спасибо, мне ваш пример тоже пригодился (правда немного переделал его под свои нужды).
0
10.11.2013, 16:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2013, 16:21

Сумма четных и нечетных элементов списка
Здраствуйте. Столкнулся с таким заданием: задан список N чисел:...

Дан список. Убедиться, что сумма эл-ов (чисел), стоящих на четных местах,равна сумме эл-ов,стоящих на нечетных
Сабж в шапке, очень нужна помощь. В решении необходимо использовать рекурсию...

Некоторые элементы дерева заменить разностью максим и минимальных элементов этого же дерева
Элементы дерева значение которых больше задаваемой величины заменить разностью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru