Максимальный элемент в списке - Prolog

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

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

Листинг программы
  1. implement fn
  2. open core
  3. constants
  4. className = "formcontainer/fn".
  5. classVersion = "".
  6. domains
  7. i=integer.
  8. il=i*.
  9. class predicates
  10. max:(il,i) procedure(i,o).
  11. clauses
  12. classInfo(className, classVersion).
  13. max([N],N).
  14. max([H|T], H) :-
  15. max(T,N1),
  16. N1<H,
  17. !.
  18. max([H|T],N1) :-
  19. max(T,N1),
  20. N1>=H,
  21. !.
  22. max ([1,2,3,4,5,6,7,8,9,10],X).
  23. calculate(X):-
  24. stdio::write(X),
  25. stdio::nl.
  26. end implement fn
Необходимо найти максимальный элемент в списке, реализовать приложение для формы. max([N],N). - не нравится программе(

Решение задачи: «Максимальный элемент в списке»

textual
Листинг программы
  1. domains
  2. int=integer
  3. intl=int*
  4.  
  5. predicates
  6.  
  7. max_el(intl,int)
  8.  
  9. clauses
  10.  
  11. max_el([H],H).
  12. max_el([H|T],H) :- max_el(T,Z), H > Z.
  13. max_el([H|T],Z) :- max_el(T,Z), H <= Z.

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

  1. В начале кода определены два домена: int - целое число, intl - int*, то есть список целых чисел.
  2. Далее определены два предиката: max_el/2 - для нахождения максимального элемента в списке, и goal/0 - для обозначения конца списка.
  3. В первом правиле (clause) предиката max_el/2 указаны два аргумента: [H] - список, в котором ищется максимальный элемент, и H - сам элемент. В этом случае, если список пустой, то максимальным элементом будет являться любой элемент этого списка.
  4. Во втором правиле (clause) предиката max_el/2 указаны три аргумента: [H|T] - список, в котором ищется максимальный элемент, и H и Z - два последних элемента списка. Если элемент H больше Z, то он и будет максимальным.
  5. В третьем правиле (clause) предиката max_el/2 указаны те же три аргумента, что и во втором правиле, но с другими значениями. Если элемент H меньше или равен Z, то он и будет максимальным.

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


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

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

8   голосов , оценка 3.625 из 5

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

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

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