БД Turbo Prolog (Прокат автомобилей)

Узнай цену своей работы

Формулировка задачи:

Всем привет! По данному условию:
Спойлер
Мои наработки:
Подскажите, как правильно построить алгоритм для Turbo Prolog. Заранее спасибо за любые ответы.

Решение задачи: «БД Turbo Prolog (Прокат автомобилей)»

textual
Листинг программы
DOMAINS
client=ct(fam,rate,days)
fam=symbol
rate=real
days=integer
trade_date=td(year,month,day)
year,month,day=integer
PREDICATES
deal(client,trade_date)
owe(symbol,real)
CLAUSES
deal(ct("Ivanov",500.0,3),td(2014,11,5)).
deal(ct("Petrov",800.0,6),td(2014,11,4)).
deal(ct("Sidorov",600.0,8),td(2014,11,16)).
owe(Fam,Sum):-
date(PresY,PresM,PresD),
deal(ct(Fam,Rate,Days),td(PresY,PresM,DealD)),
PresD>(DealD+Days),
Sum=(PresD-(DealD+Days))*Rate.
 
Goal: owe(Fam,Sum).

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

  1. В коде используется язык программирования Prolog.
  2. Код содержит три предиката: deal, owe и td.
  3. Предикат deal описывает сделку по прокату автомобиля. У него три аргумента: client (клиент), trade_date (дата сделки).
  4. Предикат owe описывает задолженность клиента. У него два аргумента: fam (фамилия клиента) и sum (сумма задолженности).
  5. В коде есть три утверждения (клаузы) с предикатом deal. Они описывают три сделки:
    • Сделка 1: клиент Иванов взял автомобиль на 3 дня под 500 рублей в день. Сделка состоялась 5 ноября 2014 года.
    • Сделка 2: клиент Петров взял автомобиль на 6 дней под 800 рублей в день. Сделка состоялась 4 ноября 2014 года.
    • Сделка 3: клиент Сидоров взял автомобиль на 8 дней под 600 рублей в день. Сделка состоялась 16 ноября 2014 года.
  6. В коде есть одно утверждение (клауза) с предикатом owe. Оно описывает задолженность клиента Fam суммой Sum по состоянию на текущую дату.
  7. В коде используется функция date, которая описывает текущую дату.
  8. В коде используется переменная PresD, которая описывает текущую дату.
  9. В коде используется формула для расчета задолженности: (PresD-(DealD+Days))*Rate.
  10. В коде есть цель owe(Fam,Sum).
  11. Цель owe(Fam,Sum) пытается найти информацию о задолженности клиента Fam суммой Sum.
  12. Предикат owe использует функцию date для определения текущей даты.
  13. Предикат owe использует предикат deal для получения информации о сделках клиента Fam.
  14. Предикат owe сравнивает текущую дату с датой последней сделки клиента Fam и вычисляет задолженность.
  15. Предикат owe выводит информацию о задолженности клиента Fam суммой Sum.
  16. Код не содержит ошибок синтаксиса.
  17. Код не содержит комментариев.
  18. Код не содержит вложенных структур данных.
  19. Код не содержит циклов или рекурсии.
  20. Код не содержит операций присваивания или арифметических операций.

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


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

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

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