Как извлечь данные из многодоменной структуры данных в составе списка? - 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
.
Вот список, описывающий код:
- Название функции: sum_kl
- Аргументы функции: [L, R]
- Описание рекурсивного случая: Если список пуст, то возвращается 0.
- Описание итеративного случая: Рекурсивно вызывается функция sum_kl для списка
L
и переменнойZ
. - Расчет значения переменной
R
: R = Z + (T * D) - Возвращаемое значение: R
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д