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

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

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

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

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

textual
Листинг программы
domains
int=integer
intl=int*
 
predicates
app(intl,intl,intl)
del_neg(intl,intl)
del_pos(intl,intl)
del_nzr(intl,intl)
del_zer(intl,intl)
task(intl,intl)
 
 
clauses
app([],X,X).
app([H|T],X,[H|R]) :- app(T,X,R).
 
del_neg([],[]).
del_neg([H|T],R) :- H<0, del_neg(T,R).
del_neg([H|T],[H|R]) :- H>0, del_neg(T,R).
 
del_pos([],[]).
del_pos([H|T],R) :- H>0, del_pos(T,R).
del_pos([H|T],[H|R]) :- H<0, del_pos(T,R).
 
del_nzr([],[]).
del_nzr([0|T],[0|R]) :- del_nzr(T,R).
del_nzr([H|T],R) :- H<>0, del_nzr(T,R).
 
del_zer([],[]).
del_zer([0|T],R) :- del_zer(T,R).
del_zer([H|T],[H|R]) :- H<>0, del_zer(T,R).
 
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