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

Ваш аккаунт

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

Последние темы форума

Показать новые сообщения »

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

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

Задача на множества

81K
22 апреля 2014 года
Kirsan190419
9 / / 17.04.2014
Народ, не совсем понимаю как сделать в прологе условие. Есть три множества А, В, С. Сначала выполняется пересечение А с В, а потом полученное множество объединяется с С. Так вот, как сделать так, чтобы перед введением множеств пользователь выбирал порядок действий?. 1 - пересечение, 2 - объединение. Если ввести 1, 2 то будет как в начальном примере, а если 2, 1, то будет сначала выполнятся объединение В с С, а потом пересечение с А

Код:
domains
list=integer*
predicates
peresech(list,list,list)
union(list,list,list)
member(integer,list)
goal
clearwindow,
write("Pervoe mnozestvo: "),nl,readterm(list,A),
write("Vtoroe mnozestvo: "),nl,readterm(list,B),
write("Tretie mnozestvo: "),nl,readterm(list,C),
peresech(A,B,AB),
union(AB,C,ABC),
write("Poluch mnozhestv"), nl,
write(ABC).
clauses
peresech([],_,[]).
peresech([H|T1],S2,[H|T]):-member(H,S2),!,
peresech(T1,S2,T).
peresech([_|T],S2,S):-peresech(T,S2,S).
union([],S2,S2).
union([H|T],S2,S):-member(H,S2),!,
union(T,S2,S).
union([H|T],S2,[H|S]):-union(T,S2,S).
member(H,[H|_]).
member(X,[_|Tail]):-member(X,Tail).
81K
28 мая 2014 года
Kirsan190419
9 / / 17.04.2014
Давно сдал уже. Пусть решение будет тут.

Код:
domains
list=integer*
predicates
peresech(list,list,list)
union(list,list,list)
member(integer,list)
goal
clearwindow,
write("Pervoe mnozestvo: "),nl,readterm(list,A),
write("Vtoroe mnozestvo: "),nl,readterm(list,B),
write("Tretie mnozestvo: "),nl,readterm(list,C),
peresech(A,B,AB),
union(AB,C,ABC),
write("Poluch mnozhestv"), nl,
write(ABC).
clauses
peresech([],_,[]).
peresech([H|T1],S2,[H|T]):-member(H,S2),!,
peresech(T1,S2,T).
peresech([_|T],S2,S):-peresech(T,S2,S).
union([],S2,S2).
union([H|T],S2,S):-member(H,S2),!,
union(T,S2,S).
union([H|T],S2,[H|S]):-union(T,S2,S).
member(H,[H|_]).
member(X,[_|Tail]):-member(X,Tail).

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог