Удаление положительных элементов из списка (Турбо Пролог) - Prolog
Формулировка задачи:
Здравствуйте, помогите пожалуйста с решением задач в Turbo Prolog.
Составьте программу удаления положительных элементов списка A(N).
Помогите пожалуйста
Решение задачи: «Удаление положительных элементов из списка (Турбо Пролог)»
textual
Листинг программы
domains int=integer intl=int* predicates del_pos(intl,intl) clauses del_pos([],[]). del_pos([H|T],[H|Z]) :- H<=0, del_pos(T,Z). del_pos([H|T],Z) :- H>0, del_pos(T,Z).
Объяснение кода листинга программы
domains
- определения типов данных используемых в программе. В данном случае,int
это целочисленный тип данных, аintl
это указатель на массив целочисленных значений.predicates
- определения пользовательских функций (предикатов) используемых в программе. В данном случае,del_pos
это предикат, который будет использоваться для удаления положительных чисел из списка.clauses
- определения правил (условных выражений) для работы предикатов. В данном случае, у нас есть три правила:- Первое правило
del_pos([],[]).
говорит о том, что если входной список пустой, то выходной список также будет пустым. - Второе правило
del_pos([H|T],[H|Z]) :- H<=0, del_pos(T,Z).
говорит о том, что если первый элемент спискаH
меньше или равен нулю, то он должен быть включен в выходной список, а оставшаяся часть спискаT
должна быть обработана рекурсивно с помощью функцииdel_pos
. - Третье правило
del_pos([H|T],Z) :- H>0, del_pos(T,Z).
говорит о том, что если первый элемент спискаH
больше нуля, то он должен быть исключен из выходного списка, а оставшаяся часть спискаT
должна быть обработана рекурсивно с помощью функцииdel_pos
.
- Первое правило
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д