Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Задача на прологе

1.8K
22 декабря 2007 года
CilCatblack
251 / / 20.09.2007
Программа:Описание семейной связи:confused:
H-e-l-p!!!
Нужно срочно!

[COLOR=Red]За неправильное название темы, нечетко изложенный вопрос и не указание рабочей среды получаешь нарушение(подробности в профиле). В следущий раз за тему с таким оформлением может быть бан. Модератор.[/COLOR]
11K
22 декабря 2007 года
Free Thinker
118 / / 16.03.2007
можно было и немного побольше инфы дать...
предположим есть файл relations.txt с содержимым:
Код:
woman("Crash").
woman("Aerie").
woman("Lara").
woman("Kerrigan").
man("Vasya").
man("Raynor").
man("Diablo").
man("Xaero").

parent("Xaero","Diablo").
parent("Diablo","Vasya").
parent("Lara","Vasya").
parent("Vasya","Aerie").
parent("Vasya","Raynor").
parent("Raynor","Crash").
parent("Kerrigan","Crash").

father(X,Y):-
    man(X),
    parent(X,Y).
mother(X,Y):-
    woman(X),
    parent(X,Y).
child(X,Y):-
    parent(Y,X).
grandChild(X,Y):-
    child(X,A),
    child(A,Y).  
grandMother(A,B):-
    woman(A),
    grandChild(B,A).
grandFather(A,B):-
    man(A),
    grandChild(B,A).
aunt(A,B):-
    woman(A),
    parent(CommonParent,A),
    parent(Z,B),
    parent(CommonParent,Z).
   
proParent(A,B):-
   parent(A,B).
proParent(A,B):-
   parent(C,B),
   proParent(A,C).


теперь можно использовать следующий код:
Код:
implement Family
    open core, stdIO

constants
    className = "Family".
    classVersion = "".
domains
    gender = man(); woman().

class facts - db
    person: (string Name, gender Gender).
    parent: (string Name1, string Name2).

class predicates
    father: (string F, string C) nondeterm anyflow.  
clauses
    father(F,C):-
           person(F,man),
           parent(F,C).
           
class predicates
    mother: (string M, string C) nondeterm anyflow.
clauses
    mother(M,C):-
           person(M,woman),
           parent(M,C).
 
 class predicates
     anscestor: (string A, string D) nondeterm anyflow.
clauses
     anscestor(A,D):-
            parent(A,D).
      anscestor(A,D):-
            parent(F,D),
            anscestor(A,F).
       
clauses
    classInfo(className, classVersion).

clauses
    run():-
        console::init(),

         file::consult("relations.txt",db),
         father(Y,X),
         writef("% is a father of %\n",Y,X),
         write("Enter person name: "),
         B = readLine(),
         anscestor(A,B),
         writef("% is ancestor of %\n",A,B),
         fail().
    run():-
        succeed().
                   
end implement Family

goal
    mainExe::run(Family::run).
1.8K
22 декабря 2007 года
CilCatblack
251 / / 20.09.2007
Не выходит.:confused:
У меня компилятор под дос.
Помогите кто-нибудь!!!:(
11K
23 декабря 2007 года
Free Thinker
118 / / 16.03.2007
этот код был написан в visual prolog 7. неужели так тяжело подправить? или запускай под vp7.
1.8K
23 декабря 2007 года
CilCatblack
251 / / 20.09.2007
Цитата: Free Thinker
этот код был написан в visual prolog 7. неужели так тяжело подправить? или запускай под vp7.



пробовал на vp6 невыходит.:(
ктому же у меня всего 5 дней для сдачи!
И никогда до этого не в prologe, не сидел.

11K
23 декабря 2007 года
Free Thinker
118 / / 16.03.2007
ммм... вроде код простой и от версий не особо зависит. а что именно не выходит? ошибка компиляции?
я смогу проверить только ближе к ночи.
1.8K
23 декабря 2007 года
CilCatblack
251 / / 20.09.2007
Выводит вот эти ошибки:
error c155: The identifier 'family' must start with a lowercase letter
error c155: The identifier 'family' must start with a lowercase letter
error c161: Syntax error: ')' is expected

P.S. В прологе я нуль. Если можешь как можно быстрре ответь, please!
11K
24 декабря 2007 года
Free Thinker
118 / / 16.03.2007
Цитата: CilCatblack

error c155: The identifier 'family' must start with a lowercase letter
error c155: The identifier 'family' must start with a lowercase letter


ну раз "must", значит переименуй Family в family. я редактировал код и забыл, что нужно с маленькой буквы.

Цитата: CilCatblack

error c161: Syntax error: ')' is expected


из за такой ошибки я даже запускать у себя не буду. ну пропустил скобку - в VP дабл-кликни на ошибку и на нужной строчке добавь скобку.

Цитата: CilCatblack

P.S. В прологе я нуль. Если можешь как можно быстрре ответь, please!


ошибки эти с самим прологом мало связаны. так что видимо не только в прологе. неужели легче ждать ответа на форуме, чем самому чуть подумать?

1.8K
24 декабря 2007 года
CilCatblack
251 / / 20.09.2007
Теперь говорит что не знает класса 'console'
 
Код:
...
console::init(),
...
11K
24 декабря 2007 года
Free Thinker
118 / / 16.03.2007
ты при создании проекта выбрал console project?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог