Re: PROLOG - 2 часть программ
domains
treetype=tree(integer,treetype,treetype); empty()
predicates
maximum(treetype,integer)
pm(treetype)
max(integer,integer,integer)
clauses
max(X,Y,X):-X>=Y,!.
max(X,Y,Y).
maximum(empty,_).
maximum(tree(X,Y,Z),MAX):-
max(MAX,X,MAX1),
write("MAX= ",MAX1),nl,
maximum(Y,MAX1),
maximum(Z,MAX1).
pm(tree(X,Y,Z)):-
MAX=X,
maximum(tree(X,Y,Z),MAX).
goal
pm(tree(8,
tree(5,
tree(1,empty,empty),
tree(6,empty,empty)),
tree(10,
tree(8, empty, empty),
tree(11, empty,empty)))).
Re: PROLOG - 2 часть программ
domains
database
xpositive(symbol,symbol)
xnegative(symbol,symbol)
predicates
begin_analis
result
ask(symbol,symbol)
virus_is(symbol)
it_is(symbol)
positive(symbol,symbol)
negative(symbol,symbol)
remember(symbol,symbol,symbol)
clear_db
clauses
% Пользовтельский интерфейс
begin_analis :-
nl,write("***Диагностики неисправностей ПК.***"),
nl,write("Отвечайте на вопросы системы о причинах неисправностей y - да, n - нет:"),
nl,nl,
result,
exit.
result :-
virus_is(X),!,nl,
write("Неисправность: ",X,"."),nl,
clear_db.
result :-
nl,write("Неисправность вашего ПК невозможно определить! "),
clear_db.
ask(X,Y) :-
write(X, " ", Y," ?"),
readln(Reply),
remember(X,Y,Reply).
% механизм вывода
positive(X,Y) :-
xpositive(X,Y),!.
positive(X,Y) :-
not(negative(X,Y)),!,
ask(X,Y).
negative(X,Y) :-
xnegative(X,Y),!.
remember(X,Y,y) :-
asserta(xpositive(X,Y)). % Добавление положительного ответа
remember(X,Y,n) :-
asserta(xnegative(X,Y)), % Добавление отрицательного ответа
fail.
clear_db :-
retract(xpositive(_,_)), % Удаление положительных ответов
fail.
clear_db :-
retract(xnegative(_,_)), % Удаление отрицательных ответов
fail.
% Продукционные правила
virus_is("Утерян загрузочный сектор Windows, необходимо восстановление либо переустановка ОС.") :-
it_is("Гудит при включении"),
positive("наблюдается","включение монитора"),
positive("наблюдается","процесс тестирования памяти"),
positive("наблюдается","прохождение всех тестов BIOS"),
positive("не загружается","операционная система"),!.
virus_is("Отсутствует либо вышел из строя жесткий диск") :-
it_is("Гудит при включении"),
positive("наблюдается","включение монитора"),
positive("наблюдается","процесс проверки соединений ATA-контроллера"),
positive("появляется","ошибка подключения IDE-устройства"),!.
virus_is("Отсутствует или вышла из строя видеокарта") :-
it_is("Гудит при включении"),
positive("наблюдается","включение монитора"),
positive("наблюдается","ошибка тестирования видеокарты"), !.
virus_is("Поврежден один или все модули памяти") :-
it_is("Гудит при включении"),
positive("наблюдается","включение монитора"),
positive("наблюдается","ошибки при тестировании памяти"),
positive("наблюдается","появление сообщения о невозможности дальнейшей загрузки"),!.
virus_is("Сгорел блок питания либо поплавилась обмотка сетевого шнура. Необходима замена.") :-
it_is("Не гудит при включении"),
positive("наблюдается","неприятный запах из корпуса"),
positive("наблюдается","появление дыма"),!.
virus_is("Вышла из строя либо несовместима с данным оборудованием видеокарта. Требуется замена") :-
it_is("Не гудит при включении"),
positive("наблюдается","свечение индикатора памяти"),
positive("наблюдается","отсутствие свечения индикатора видеокарты"),!.
it_is("Гудит при включении") :-
positive("наблюдается","шум от работы вентиляторов"),!.
it_is("Не гудит при включении") :-
positive("наблюдается","отсутствие шума от работы вентиляторов"),!.
goal
begin_analis.