Перевод из 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для перехода на новую строку после вывода.