Создать предикат, нахождения множества - Prolog

Узнай цену своей работы

Формулировка задачи:

Добрый день! помогите создать предикат, нахождения множества , которое получается в результате выполнения следующих действий над тремя множествами А - (В∩С)

Решение задачи: «Создать предикат, нахождения множества»

textual
Листинг программы
  1. domains
  2. i=integer
  3. mn=i*
  4. predicates
  5. member(i,mn)
  6. intersection(mn,mn,mn)
  7. minus(mn,mn,mn)
  8. delete_all(i,mn,mn)
  9. list_set(mn,mn)
  10. start(mn)
  11. rezult(mn,mn,mn,mn)
  12. clauses
  13. member(X,[X|_]):-!.
  14. member(X,[_|T]):-member(X,T).
  15. intersection([],_,[]).
  16. intersection([H|T1],S2,[H|T]):-member(H,S2),!,intersection(T1,S2,T).
  17. intersection([_|T],S2,S):-intersection(T,S2,S).
  18. minus([],_,[]).
  19. minus([Z|T],S2,S):-member(Z,S2), !, minus(T,S2,S).
  20. minus([Z|T],S2,[Z|S]):-minus(T,S2,S).
  21. delete_all(_,[],[]).
  22. delete_all(X,[X|L],L1) :- delete_all(X,L,L1).
  23. delete_all(X,[Y|L],[Y|L1]) :- X<>Y, delete_all(X,L,L1).
  24. list_set([],[]).
  25. list_set([H|T],[H|T1]) :- delete_all(H,T,T2), list_set(T2,T1).
  26. start(X1):-readterm(mn,X),list_set(X,X1).
  27. rezult(A,B,C,X):-intersection(В,С,D),minus(A,D,X).
  28. goal
  29. write("Введите первое множество: "),
  30. start(A),
  31. write("Введите второе множество: "),
  32. start(B),
  33. write("Введите третье множество: "),
  34. start(C),
  35. rezult(A,B,C,X),
  36. write("Результат: ",X).

Объяснение кода листинга программы

В коде присутствуют следующие элементы:

  1. Объявление типов данных и переменных:
    • Тип данных: i=integer
    • Переменные: mn=i*
  2. Объявление предикатов:
    • member(i,mn)
    • intersection(mn,mn,mn)
    • minus(mn,mn,mn)
    • delete_all(i,mn,mn)
    • list_set(mn,mn)
    • start(mn)
    • rezult(mn,mn,mn,mn)
  3. Определение функций для работы с предикатами:
    • member(X,[X|_]):-!.
    • member(X,[_|T]):-member(X,T).
    • intersection([],_,[]).
    • intersection([H|T1],S2,[H|T]):-member(H,S2),!,intersection(T1,S2,T).
    • intersection([_|T],S2,S):-intersection(T,S2,S).
    • minus([],_,[]).
    • minus([Z|T],S2,S):-member(Z,S2), !, minus(T,S2,S).
    • minus([Z|T],S2,[Z|S]):-minus(T,S2,S).
    • deleteall(,[],[]).
    • delete_all(X,[X|L],L1) :- delete_all(X,L,L1).
    • delete_all(X,[Y|L],[Y|L1]) :- X<>Y, delete_all(X,L,L1).
    • list_set([],[]).
    • list_set([H|T],[H|T1]) :- delete_all(H,T,T2), list_set(T2,T1).
    • start(X1):-readterm(mn,X),list_set(X,X1).
    • rezult(A,B,C,X):-intersection(В,С,D),minus(A,D,X).
  4. Ввод-вывод данных:
    • Ввод первого множества: Введите первое множество:
    • Ввод второго множества: Введите второе множество:
    • Ввод третьего множества: Введите третье множество:
    • Вывод результата: Результат:
  5. Цель программы:
    • rezult(A,B,C,X)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.533 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы