Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2013, 19:40   #1
hilos
Новичок
Джуниор
 
Регистрация: 12.06.2013
Сообщений: 1
По умолчанию Prolog

Здравствуйте.Заранее прошу сильно не пинать.Ситуация такая.Есть несколько программ на prolog'e,но они не работаю ни в vip 7 ни в GNU Prolog
Задания такие:
1)база знаний родственных связей
2)подсчет длинны списка
3)сумма нечетных элементов списка
вот сами программы.Кто может что то поправите.

1 база знаний родственных связей
Код:
domains
name=symbol

predicates
nondeterm parrent(name,name)
nondeterm sister(name,name)
%nondeterm twochild(name)
%nondeterm aunt(name)
%nondeterm happy(symbol)
nondeterm grand(name,name)
nondeterm grandgrand(name,name)

clauses
parrent(pam,bob).
parrent(tom,bob).
parrent(tom,liz).
parrent(bob,emm).
parrent(bob,pat).
parrent(pat,jimm).
sister(pat,emm).
sister(bob,liz).
grand(bob,jimm).
grand(tom,emm).
grand(tom,pat).
grand(pam,pat).
grand(pam,emm).
grandgrand(pam,jimm).
grandgrand(tom,jimm).
%happy(X):-parrent(X,Y), write(X, "happy, because", Y, "\n"),fail.
%twochild(X):-parrent(X,Y), sister(Y,Z), parrent(X,Z).
%aunt(X):-parrent(Y,Z), sister(Y,X), write(X,"aunt",Z,"\n"),fail.

goal
%happy(X).
%twochild(X).
%aunt(X).
grandgrand(tom,jimm).
2.подсчет длинны списка
Код:
class my
predicates
  length_of : (A*, integer) procedure(i,o).
end class
 
implement my
clauses
  length_of([], 0).
  length_of([_|T], L):-
    length_of(T, TailLength),
    L = TailLength + 1.
end implement
 
goal
  console::init(),
  my::length_of([1, 2, 3], L),
  stdio::write(L).
3.сумма нечетных элементов списка
Код:
odd(A) :-
    B is A mod 2,
    B =:= 1,
    !.
 
odd_sum([], 0) :-
    !.
odd_sum([Head | Tail], R) :-
    odd(Head),
    odd_sum(Tail, R_),
    plus(Head, R_, R),
    !.
odd_sum([_ | Tail], R) :-
    odd_sum(Tail, R).
 
%% Examples:
    
%% ?- odd_sum([1,2,1,13,100], Result).
%% Result = 15.
 
%% ?- odd_sum([2,4,6], Result).
%% Result = 0.
hilos вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Prolog igrokk Помощь студентам 1 01.05.2013 11:16
prolog Onni Помощь студентам 6 07.01.2013 22:27
Prolog qip2005 Помощь студентам 0 01.12.2011 02:05
Prolog ankatito Помощь студентам 6 13.11.2011 20:53
Prolog Debro Помощь студентам 2 26.12.2009 10:16