Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться в чем дело! 
V
    Опции темы
kuller
Дата 10.9.2008, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вобщем мне дано дерево, в котором есть Муж, Жена и Дети.... ну вот задача вывести кто кому является племянниками ... вначале решил вывести только племянников М и Ж пола .. вот написал программу:

Код

predicates
   man(symbol)
   woman(symbol)
   parent(symbol, symbol)
   plemyanniki(symbol,symbol)
   
clauses
   man(sergey).
   man(dmitriy).
   man(valera).
   man(petr).
   man(mihail).
   man(nikolay).
   man(alex).
   man(alexandr).
   man(kostya).
   
   woman(barbara).
   woman(anna).
   woman(tatiana).
   woman(liza).
   woman(katya).    
   woman(juli).
   woman(raisa).
   woman(lyuda).
   
   parent(barbara, liza).
   parent(liza, alex).
   parent(alex, kostya).
   parent(anna, katya).
   parent(anna, petr).
   parent(sergey, katya).
   parent(sergey, petr).
   parent(katya, juli).   
   parent(petr, alex).  
   parent(petr, alexandr).
   parent(alexandr, lyuda).
   parent(juli, lyuda).
   parent(tatiana, mihail).
   parent(dmitriy, mihail).
   parent(mihail, juli).
   parent(valera, nikolay).
   parent(nikolay, raisa).
   parent(raisa, kostya).
   
   plemyanniki(X,Y):-
   parent(Z,Y),
   parent(A,Z),
   parent(B,Z),
   parent(C,X),
   parent(A,C),
   parent(B,C),
   X<>Y,
   Z<>C,
   man(X),
   woman(Y).
   
   goal
   plemyanniki(X,Y),
   write("\nman and wonam\n").


Вот результат:
Код


man and wonam
X=alex, Y=juli

man and wonam
X=alexandr, Y=juli

man and wonam
X=alex, Y=juli

man and wonam
X=alexandr, Y=juli

man and wonam
X=alex, Y=juli

man and wonam
X=alexandr, Y=juli

man and wonam
X=alex, Y=juli

man and wonam
X=alexandr, Y=juli

man and wonam
X=kostya, Y=lyuda
9 Solutions


выдает 9 результатов ... а должна только 3:

man and wonam
X=alex, Y=juli
man and wonam
X=alexandr, Y=juli
man and wonam
X=kostya, Y=lyuda

помогите разобраться в чем дело.
Заранее благодарен!
PM MAIL   Вверх
sadgb
Дата 12.9.2008, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



я немного подправил код 

 
 plem(X,Y):-
    parent(Z,Y),
    parent(A,Z),
    parent(B,Z),
    parent(C,X),
    parent(A,C),
    parent(B,C),
    X\=Y,
    Z\=C,
    man(X),
    woman(A),
    man(B),
    woman(Y).

на выходе 2 резалта  алекс с джули и александр с джули 
насчёт кости и люды ты поторопился с выводами - если нарисовать дерево то видно что у них общий дед но это не означает что их родители родные братья - возможно они сводные. 
если добавить в базу строку вида   parent(liza,alexandr).
тогда костя с лидой и правда станут племяниками и программа выдаст 3 результата



по поводу твоего варианта  тебе наверно интересно почему у тебя алекс и джули 4 раза : отвечаю 
исходя из твоих обозначений 
варианты A=anna B=sergey 
A= sergey B=anna 
A= sergey B = sergey 
A= anna B = anna

думаю понял в чём была проблема .

удачи. если помог плюсуй ) 

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

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

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


 




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


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

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