Посчитать количество цифр в числе на Visual Prolog

      Комментарии к записи Посчитать количество цифр в числе на Visual Prolog отключены

Главная Форумы Программирование Помощь с решением задач на Prolog Общие вопросы Посчитать количество цифр в числе на Visual Prolog

В этой теме 1 ответ, 2 участника, последнее обновление  Васильев Владимир Сергеевич 1 год, 8 мес. назад.

  • Автор
    Сообщения
  • #2237

    questioner
    Участник

    Дано число в десятичной системе счисления. Необходимо определить количество цифр в нем. Решить лабораторную надо на Visual Prolog 5.2.

  • #2238

    digits_count(Number, 1):-
      Number >= 0, Number <= 9, !.
    digits_count(Number, Count):-
      NumberWithoutDigit = Number div 10,
      digits_count(NumberWithoutDigit, CountWithotDigit),
      Count = CountWithotDigit + 1.

    Если число является цифрой, то есть находится в диапазоне от нуля до девяти – то оно состоит из единственного разряда, поэтому функция должна вернуть единицу и выполнить отсечение. Отсечение при этом запретит искать другие варианты решения, т.к. очевидно, что решение единственное и уже найдено.
    В противном случае выполняется целочисленное деление исходного числа на 10 – за счет этого последний разряд числа отбрасывается. Остаток числа обрабатывается рекурсивно – разряды числа будут отбрасываться до тех пор, пока не останется один разряд, который запустит первое правило функции. При рекурсивной обработке формируется результат – количество разрядов в числе без последней цифры, для получения окончательного результата к нему надо добавить единицу.

    В Visual Prolog исходный код этой функции должен быть помещен в секцию clauses, а в раздел predicates необходимо описать прототип функции:
    digits_count(integer, integer)
    В данном случае, функция принимает два аргумента, оба из которых являются целыми числами.

Для ответа в этой теме необходимо авторизоваться.