Перевод из 10 системы счисления в 8 - Free variables are not allowed here - Prolog
Формулировка задачи:
Здравсвтуйте! Программа должна переводить из 10 системы счисления в 8:
При попытке запуска выдает ошибку "Free variables are not allowed here" здесь:
printList([]).
printList([H|T]):- write(
Листинг программы
- convert(D, [H|T]):-
- Div = D div 8, Div > 8, H = D mod 8, convert(Div, T).
- convert(D, [H|T]):-
- Div = D div 8, Div < 8, H = Div, printList([H|T]).
- printList([]).
- printList([H|T]):- write(H), printList(T).
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
для перехода на новую строку после вывода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д