Списки. Удалить отрицательные элементы - Prolog

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

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

Задание звучит так: Организовать ввод и формирование списка вещественных чисел с проверкой. Сформировать список положительных элементов исходного списка. Упорядочить полученный список по возрастанию значений элементов. Подскажите, как из списка получить список без отрицательных элементов? Вот что я написала по заданию:
Листинг программы
  1. vvlist1 :-write('задайте длину списка'),read(N), vvodlist(N,L),sort_insert(L,LS) ,write('L= '),write(LS).
  2. delete_term([],[]).
  3. delete_term(L,LS):-
  4. sort_insert([],[]).
  5. sort_insert([X|T],OL):-sort_insert(T,OT),insert(X,OT,OL).
  6. insert(X,[],[X]).
  7. insert(X,[Y|T],[X,Y|T]):- X=<Y.
  8. insert(X,[Y|T],[Y|T1]):- X>Y,insert(X,T,T1).

Решение задачи: «Списки. Удалить отрицательные элементы»

textual
Листинг программы
  1. ?- Xs = [2, 3, 0, -1, 1], setof(X, (member(X, Xs), X > 0), Ys).
  2. Xs = [2, 3, 0, -1, 1],
  3. Ys = [1, 2, 3].

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

  1. Первый элемент списка Xs: 2.
  2. Второй элемент списка Xs: 3.
  3. Третий элемент списка Xs: 0.
  4. Четвертый элемент списка Xs: -1.
  5. Пятый элемент списка Xs: 1.
  6. Переменная Ys инициализируется как пустой список.
  7. Код в скобках (member(X, Xs), X > 0) является предикатом, который проверяет, является ли элемент X членом списка Xs и больше ли он нуля.
  8. Код в скобках (member(X, Xs), X > 0) применяется к каждому элементу списка Xs.
  9. Если элемент X является членом списка Xs и больше нуля, он добавляется в список Ys.
  10. В результате получается список Ys: [1, 2, 3].
  11. Переменная Ys возвращается в качестве результата.

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


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

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

10   голосов , оценка 3.9 из 5

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

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

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