Как извлечь данные из многодоменной структуры данных в составе списка? - Prolog

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

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

Друзья, помогите советом. Я застрял. Задача звучит следующим образом: Пусть имеется список структур «кл»: [кл (а, 29, 3), кл (b, 29, 6), кл (с, 40, 2), кл (d, 35, 6), кл (e, 24, 3), кл (f, 31, 2)]. Первым аргументом каждой структуры служит имя клиента, вторым – суточный тариф, а третьим – количество дней, которое используется автомашина. Напишите правило, позволяющее вычислить итоговую сумму оплаты, объединяющую выплаты всех клиентов, данные о которых содержатся в списке. Я рисую код:
Дело в том, что когда я выделил один элемент из списка (структура вида human(a, 29, 3)) я не могу обратиться к ее содержимому. Просто не знаю как. Могу только в диалог вывести строчку целиком, а мне надо отдельно умножит 29 на 3. КАК? Работаю в Турбо-прологе 2

Решение задачи: «Как извлечь данные из многодоменной структуры данных в составе списка?»

textual
Листинг программы
%SWI-PROLOG 7.1.26
sum_kl([],0).
sum_kl([kl(_,T,D)|L],R) :-
    sum_kl(L,Z),
    R is Z + (T * D).

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

Код представлен в виде рекурсивной функции с названием sum_kl, которая принимает два аргумента: список L и число R. Если список пуст, то рекурсия завершается и возвращается 0. В противном случае, функция рекурсивно вызывается для списка L и переменной Z, а затем результат суммируется с произведением T и D и присваивается переменной R. Вот список, описывающий код:

  1. Название функции: sum_kl
  2. Аргументы функции: [L, R]
  3. Описание рекурсивного случая: Если список пуст, то возвращается 0.
  4. Описание итеративного случая: Рекурсивно вызывается функция sum_kl для списка L и переменной Z.
  5. Расчет значения переменной R: R = Z + (T * D)
  6. Возвращаемое значение: R

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


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

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

13   голосов , оценка 3.692 из 5
Похожие ответы