Точка остановки - 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
, который может быть вызван без аргументов. Если этот глагол вызывается без аргументов, он не делает ничего.
Если же переданы аргументы, то выполняется следующее:
- Проверяется, что переданы три аргумента. Если это не так, то генерируется ошибка.
- Выполняется операция
mult
с переданными аргументами. Результат этой операции запоминается в переменнойZ
. - Проверяется, что результат операции
mult
не равен 25. Если это так, то выполняется операцияretract
, которая отменяет предыдущую операциюmult
. - Если результат операции
mult
не равен 25, то выполняется операцияnot
, которая преобразует результат операцииmult
в логическое значениеfalse
. - Если логическое значение
not
равноfalse
, то выполняется операцияfail
, которая генерирует ошибку. - Конец.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д