Перевод из 10 системы счисления в 8 - Free variables are not allowed here - Prolog
Формулировка задачи:
Здравсвтуйте! Программа должна переводить из 10 системы счисления в 8:
При попытке запуска выдает ошибку "Free variables are not allowed here" здесь:
printList([]).
printList([H|T]):- write(
H
), printList(T). В чем может быть дело? Заранее спасибоРешение задачи: «Перевод из 10 системы счисления в 8 - Free variables are not allowed here»
textual
Листинг программы
predicates conv(integer,integer) clauses conv(N,R) :- N<R, write(N), !. %% N - число; R-основание conv(N,R) :- NN=N div R, conv(NN,R), RR=N mod R, write(RR). goal conv(25,8),nl.
Объяснение кода листинга программы
Код выполняет перевод числа из одной системы счисления в другую.
predicates
- определениеpredicateдля функции
conv(integer,integer)`, которая принимает два целых числа в качестве аргументов.clauses
- определение правил (условий) для функцииconv(N,R)
, которые говорят, что если первое числоN
меньше второго числаR
, то выводимN
и прекращаем выполнение. В противном случае выполняем следующие действия.conv(N,R)
- рекурсивный вызов функцииconv(NN,R)
, гдеNN
- результат целочисленного деленияN
наR
. Также выполняется вычислениеRR=N mod R
, гдеRR
- остаток от деленияN
наR
. Затем вызывается функцияwrite(RR)
, чтобы вывести остаток.goal
- цель, которую нужно достичь. В данном случае выполняется перевод числа 25 из 10 системы счисления в 8 и выводится результат. Также добавляетсяnl
для перехода на новую строку после вывода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д