Prolog. Работа со списками

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

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

У кого-нибудь есть какие-то идеи насчет этой задачи? Или хотя бы натолкните, пожалуйста, на мысль А то идей вообще нету Условие: Реализовать очередь в виде списка. Заполнить очередь случайными действительными числами от -100 до 100. Переставить ее члены так, чтобы сначала расположились все ее отрицательные члены, а потом - все положительные. Порядок как среди положительных членов, так и среди отрицательных должен быть сохранен прежним. Для временного хранения положительных и отрицательных элементов использовать стеки. Значения элементов очереди до и после перестановки вывести на экран.

Решение задачи: «Prolog. Работа со списками»

textual
Листинг программы
  1. domains
  2. int=integer
  3. intl=int*
  4.  
  5. predicates
  6. app(intl,intl,intl)
  7. del_neg(intl,intl)
  8. del_pos(intl,intl)
  9. del_nzr(intl,intl)
  10. del_zer(intl,intl)
  11. task(intl,intl)
  12.  
  13.  
  14. clauses
  15. app([],X,X).
  16. app([H|T],X,[H|R]) :- app(T,X,R).
  17.  
  18. del_neg([],[]).
  19. del_neg([H|T],R) :- H<0, del_neg(T,R).
  20. del_neg([H|T],[H|R]) :- H>0, del_neg(T,R).
  21.  
  22. del_pos([],[]).
  23. del_pos([H|T],R) :- H>0, del_pos(T,R).
  24. del_pos([H|T],[H|R]) :- H<0, del_pos(T,R).
  25.  
  26. del_nzr([],[]).
  27. del_nzr([0|T],[0|R]) :- del_nzr(T,R).
  28. del_nzr([H|T],R) :- H<>0, del_nzr(T,R).
  29.  
  30. del_zer([],[]).
  31. del_zer([0|T],R) :- del_zer(T,R).
  32. del_zer([H|T],[H|R]) :- H<>0, del_zer(T,R).
  33.  
  34. task(X,R) :- del_nzr(X,Z), del_zer(X,XX), del_neg(XX,P), del_pos(XX,N), app(P,Z,PZ), app(PZ,N,R).

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


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

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

9   голосов , оценка 3.444 из 5

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

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

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