Предикат, проверяющий введена ли цифра, а не буква - Prolog
Формулировка задачи:
Дана программа, переводящая число от 1 до 9 в его словесное обозначение. Помогите написать предикат, проверяющий введена ли цифра, а не буква. При наличие буквы, вывести соответствующее сообщение.
Решение задачи: «Предикат, проверяющий введена ли цифра, а не буква»
textual
Листинг программы
domains strl=string* intl=integer* predicates num2str(strl,strl) getDig(integer,strl,string) clauses getDig(0,[H|_],H). getDig(N,[_|T],R) :- N>0, N1=N-1, getDig(N1,T,R). num2str([],[]). num2str([X|R],[Q|T]) :- X>="0", X<="9", str_int(X,N), getDig(N,["Zero","One","Two","Three","Four", "Five","Six","Seven","Eight","Nine"],Q), num2str(R,T). num2str([X|R],[Q|T]) :- X < "0", Q="Not a digit!",num2str(R,T). num2str([X|R],[Q|T]) :- X > "9", Q="Not a digit!",num2str(R,T).
Объяснение кода листинга программы
- В коде определены два домена: strl (строка символов) и intl (целое число).
- Также в коде определены два предиката: num2str и getDig.
- Предикат getDig преобразует целое число в строку, используя список строк с наименованиями цифр от 0 до 9.
- Предикат num2str преобразует строку символов в строку цифр, используя предикат getDig.
- В первой клаузе предиката getDig, если входной список пуст, то возвращается пустая строка.
- Во второй клаузе предиката getDig, если входной список не пуст, то из него удаляется первый элемент и преобразуется в строку цифр, после чего вызывается рекурсивно предикат getDig для оставшейся части списка.
- В первой клаузе предиката num2str, если входной список пуст, то возвращается пустая строка.
- Во второй клаузе предиката num2str, если первый элемент входного списка является цифрой от 0 до 9, то он преобразуется в целое число, вызывается рекурсивно предикат getDig для оставшейся части списка и в конце возвращается результат.
- Если первый элемент входного списка не является цифрой от 0 до 9, то возвращается сообщение
Not a digit!
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д