Проверка числа на вхождение в интервал - Prolog
Формулировка задачи:
Здравствуйте!
Учу Пролог. Пишу в SWI-prolog editor.
Помогите с таким заданием:
Процедура при первом обращении спрашивает имя пользователя, при втором - числовой интервал, в дальнейшем - запрос числа, которое сохраняется, если принадлежит интервалу. По команде создается терм, содержащий имя и список цифр, которые были введены, а потом все начинается снова.
Написал часть проги, которая работает в цикле - сначала вводим имя, потом интервал, потом число. Думаю делать все с файлом - в нем будут сохраняться введенные цифры. Дальше не знаю как делать.. Помогите с решением. Спасибо!
Решение задачи: «Проверка числа на вхождение в интервал»
textual
Листинг программы
% SWI-Prolog :- set_prolog_flag(double_quotes, string). :- dynamic([usr/1, int/1, num/1, out_term/2]). p :- \+ usr(_), write("Введите имя пользователя: "), read(UserName), assertz( usr(UserName) ), fail. p :- \+ int(_), write("Введите интервал: "), read(Low-High), assertz( int(Low-High) ), fail. p :- \+ int(_), p. p :- write("Введите число, команду term или quit: "), read(X), \+ p(X), !. p :- p. p(quit) :- p(term), write("Сессия завершена."), !, fail. p(term) :- usr(UserName), findall(Num, num(Num), Nums), assertz( out_term(UserName, Nums) ), write("Сформирован терм: "), writeln( out_term(UserName, Nums) ), retractall( usr(_) ), retractall( int(_) ), retractall( num(_) ), !. p(X) :- integer(X), int(Low-High), between(Low, High, X), assertz( num(X) ), !. p(_).
Объяснение кода листинга программы
В этом коде используется язык программирования Prolog. Вот список действий, которые выполняются в этом коде:
- Установка флага double_quotes для обработки строк с использованием двойных кавычек.
- Создание динамической области памяти для переменных usr, int, num, out_term.
- Основной цикл программы, который продолжается до тех пор, пока пользователь не введет «quit».
- Если пользователь вводит «usr», запрашивается имя пользователя и сохраняется в переменной UserName.
- Если пользователь вводит «int», запрашивается интервал и сохраняется в переменной Low-High.
- Если пользователь вводит «num», запрашивается число и сохраняется в переменной X.
- Если пользователь вводит «term», выводится сформированный терм, состоящий из имени пользователя и чисел, и завершается сессия.
- Если пользователь вводит «quit», выводится сообщение «Сессия завершена».
- Если пользователь вводит что-то, что не является «usr», «int», «num», «term» или «quit», программа продолжается.
- Если пользователь вводит «term», выводится сообщение «Неверный ввод».
- Если пользователь вводит число X, проверяется, находится ли оно в заданном интервале, и если да, то число X сохраняется в переменной Num, и формируется терм, состоящий из имени пользователя и чисел, и выводится на экран.
- Если пользователь вводит «quit», «term» или что-то еще, что не является числом, программа продолжается.
- Если пользователь вводит число X, которое не находится в заданном интервале, программа продолжается.
- Если пользователь вводит «quit», «term» или что-то еще, программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д