Перевод из 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.

Объяснение кода листинга программы

Код выполняет перевод числа из одной системы счисления в другую.

  1. predicates - определениеpredicateдля функцииconv(integer,integer)`, которая принимает два целых числа в качестве аргументов.
  2. clauses - определение правил (условий) для функции conv(N,R), которые говорят, что если первое число N меньше второго числа R, то выводим N и прекращаем выполнение. В противном случае выполняем следующие действия.
  3. conv(N,R) - рекурсивный вызов функции conv(NN,R), где NN - результат целочисленного деления N на R. Также выполняется вычисление RR=N mod R, где RR - остаток от деления N на R. Затем вызывается функция write(RR), чтобы вывести остаток.
  4. goal - цель, которую нужно достичь. В данном случае выполняется перевод числа 25 из 10 системы счисления в 8 и выводится результат. Также добавляется nl для перехода на новую строку после вывода.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5