IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Родственные отношения, Prolog
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Здравствуйте!

Таково содержимое базы:
Код

%факты
parent(petr,ivan). %petr - родитель для ivan
parent(petr,olga).
parent(lidia,ivan).
parent(ivan,sergey).
parent(ivan,oleg).
parent(oleg,inna).
%процедуры
ancestor(A,B):-parent(A,B).
ancestor(A,B):-parent(C,B),ancestor(A,C).
brother(A,B):-parent(C,A),parent(C,B). %A - это брат B, если у них один родитель

Проблема в том, что при, например, таком запросе (кто для ivan братья):
Код

?- brother(X,ivan).

X = ivan ,

X = olga ,

X = ivan ,
no

ivan сам себе получается братом...
подскажите пожалуйста, как подправить это? и ещё, как учесть, что может быть отношение брат, а может быть сестра..?

Сообщение отредактировано: 18192123 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Почему же нельзя? Можно, тот же Турбо-Пролог нормально компилирует это. Но только тогда, когда в Predicates (не знаю, как это называется в твоем компиляторе, там, где пишутся прототипы всех функций) описаны прототипы Man и Woman
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(volvo @ 28.02.2009 22:09) *

...нормально компилирует это. Но только тогда, когда в Predicates (не знаю, как это называется в твоем компиляторе, там, где пишутся прототипы всех функций) описаны прототипы Man и Woman

тоже не знаю, где у меня эти прототипы нужно описать..
ещё появился такой вариант:
Код

gander(petr,M).
gander(ivan,M).
gander(oleg,M).
gander(sergey,M).
gander(lidia,W).
gander(olga,W).
gander(inna,W).
parent(petr,ivan).
parent(petr,olga).
parent(lidia,ivan).
parent(ivan,sergey).
parent(ivan,oleg).
parent(oleg,inna).
ancestor(A,B):-parent(A,B).
ancestor(A,B):-parent(C,B),ancestor(A,C).
brother(A,B):-parent(C,A),parent(C,B),not(A=B),gander(A,M).

Проходит без ошибок, но никаких изменений в результатах...на запрос о братьях ivan выдает olga, хотя должно быть no...
Код

?- brother(X,ivan).

X = olga ,
no
?-
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 11.09.2025 8:54
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name