Найти произведение всех положительных элементов списка - Prolog

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

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

Добрый день. Подскажите пожалуйста что я сделал не так? Необходимо перемножить все положительные элементы.
Спасибо за помощь.

Решение задачи: «Найти произведение всех положительных элементов списка»

textual
Листинг программы
domains
list=integer*
predicates
mul(list,integer,integer).
clauses
mul([],Result,Result).
mul([Head|Tail],Result, Counter):- NewCounter=Counter*Head, mul(Tail,Result,NewCounter).
goal
mul([2,-3,4,-1,2],L,1),write(L),nl,fail.

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

  1. domains - определение типа данных, которые могут использоваться в программе. В данном случае, список целых чисел (integer*).
  2. predicates - определение пользовательских предикатов, которые могут быть использованы в программе. В данном случае, предикат mul, который принимает три аргумента: список (list), результат умножения (integer), и счетчик (integer).
  3. clauses - определение правил, которые определяют поведение предикатов. В данном случае, два правила: одно для пустого списка, где результат умножения и счетчик равны результату, и второе для непустого списка, где результат умножения равен произведению текущего элемента и счетчика, а счетчик обновляется для следующего элемента списка.
  4. goal - определение цели, которую нужно достичь. В данном случае, список [2,-3,4,-1,2] умножается на 1, и результат присваивается переменной L. Затем, результат выводится на экран и программа завершается с ошибкой (fail).

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


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

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

6   голосов , оценка 4.333 из 5
Похожие ответы