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
% User interface
begin_analis :-
nl,write(«***Медицинская диагностика пациентов***»),
nl,write(«Отвечайте на вопросы системы y-да, n-нет:»),
nl,nl,
result,
write(«Нажмите пробел.»),nl,
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).
% Output mechanism
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.
% Rules
virus_is(«Не беспокойтесь все пройдет.») :-
it_is(«Температура высокая»),
positive(«»,»вам вообще плохо»),
positive(«наблюдаются»,»частые головные боли и головокружения»),!.
virus_is(«Тогда не бойтесь идите домой и застрелитесь. Заодно и всех окружающих») :-
it_is(«Температура высокая»),
positive(«»,»у вас плохая память»),!.
virus_is(«Бросайте курить и начинайте пить») :-
it_is(«Температура высокая»),
positive(«проблемы с желудком «,»»),!.
virus_is(«Обратитесь к профессиональному врачу а не к этой программе.»):-
it_is(«Температура нормальная»),
positive(«Голова перестала болеть»,»»),
positive(«Вы вообще употребляете какую нибудь пищу»,»»),
positive(«Ничего не помогает»,»»),!.
virus_is(«Тогда идите домой») :-
it_is(«Температура нормальная»),
positive(«У вас маленькая зарплата»,»»),!.
it_is(«Температура высокая») :-
positive(«Температура «,»нормальная»),!.
it_is(«Температура нормальная») :-
positive(«У вас «,»что то болит»),!.
goal
begin_analis.