Точка остановки - Prolog

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

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

программа может создать таблицу умножения и сохранить ее в файл.но сейчас нужно сделать так чтоб она загружала созданный ею файл и удалила все записи кроме нужной.проблема в том что предикат del удаляет все записи,то есть точка остановки не срабатывает. я догадываюсь,что надо было просто rectalом пройти,но не получается.помогите пожалуйста.если можно сразу кусок кода отвечающий за удаление всех записей кроме одной например 5 5 25

Решение задачи: «Точка остановки»

textual
Листинг программы
del() :- mult(X,Y,Z), not( (X=5, Y=5, Z=25) ), retract( mult(X,Y,Z) ), fail.
del().

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

В коде определен глагол del, который может быть вызван без аргументов. Если этот глагол вызывается без аргументов, он не делает ничего. Если же переданы аргументы, то выполняется следующее:

  1. Проверяется, что переданы три аргумента. Если это не так, то генерируется ошибка.
  2. Выполняется операция mult с переданными аргументами. Результат этой операции запоминается в переменной Z.
  3. Проверяется, что результат операции mult не равен 25. Если это так, то выполняется операция retract, которая отменяет предыдущую операцию mult.
  4. Если результат операции mult не равен 25, то выполняется операция not, которая преобразует результат операции mult в логическое значение false.
  5. Если логическое значение not равно false, то выполняется операция fail, которая генерирует ошибку.
  6. Конец.

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


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

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

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