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).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д