Списки, вывести максимальную зарплату - Prolog
Формулировка задачи:
Прога не работает где я допустил ошибку?
Листинг программы
- DOMAINS
- List=integer*
- Staj, Zarplata = integer.
- Name = string
- PREDICATES
- sotr(Name,Staj,Zarplata).
- nondeterm max(List,integer).
- CLAUSES
- sotr("Kalyk Islam", 1, 10000).
- sotr("Belan Evgeniya", 2, 2000).
- sotr("Zulpidin Kurban", 3, 3000).
- sotr("Gudkova Tatiana", 4, 4000).
- sotr("Kirillov Vladislav", 5, 5000).
- sotr("Li Roman", 6, 6000).
- sotr("Pushkarev Pavel", 7, 7000).
- sotr("Saitov Ilnur", 8, 8000).
- sotr("Satybaev Muhamed", 9, 9000).
- sotr("Tretyakov Andrey", 10, 10000).
- max([X],X).
- max([H|Tail],H):-max(Tail,M),H<M,!.
- max([_|Tail],M):-max(Tail,M).
- GOAL
- findall(sotr(_,_,Zarplata),L),nl,max(List,X),write(X),nl,sotr(Name,Staj,X).
Решение задачи: «Списки, вывести максимальную зарплату»
textual
Листинг программы
- findall(Zarplata, sotr(_,_,Zarplata), L),
Объяснение кода листинга программы
findall(Zarplata, sotr(_,_,Zarplata), L)
- это выражение на языке Prolog, которое ищет все значения переменнойZarplata
, которые удовлетворяют условиюsotr(_,_,Zarplata)
. Здесьsotr
- это название функции или оператора, аZarplata
- это название переменной.sotr(_,_,Zarplata)
- это условие, которое определяет, какие значения переменнойZarplata
должны быть найдены. Здесь_
- это местозаменитель для любого значения, которое может быть проверено на соответствие условию.L
- это название переменной, которая используется для хранения найденных значений переменнойZarplata
.Zarplata
- это название переменной, которая представляет собой список значений, которые мы ищем. Каждое значение в этом списке соответствует одной записи в базе данных или наборе данных, на основе которых выполняется поиск.- В результате выполнения этого выражения, Prolog найдет все значения переменной
Zarplata
, которые удовлетворяют условиюsotr(_,_,Zarplata)
, и сохранит их в переменнойL
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д