ВУЗ:
Составители:
Рубрика:
41
Предикат repeat используется в разделе goal для организации цик-
ла по обработке вопросов.
domains
кто=symbol
что=symbol
facts – f1
увлечение(кто,что)
кто(кто)
что(что)
predicates
nondeterm repeat
nondeterm ответить(symbol)
ответить_что(кто)
ответить_кто(что)
анализ_КтоЧто(symbol)
спросить
goal
consult("hobbyNew.dbs",f1),
repeat,
спросить,
retractall(кто(_)),
retractall(что(_)),
write("Есть вопросы? (Д|Н)"),
readchar(ДаНет),
ДаНет='Н',exit().
clauses
repeat.
repeat:-repeat.
ответить(""):-
кто(Кто),
что(Что),
увлечение(Кто,
Что),!,
write("Да");
кто(Кто),
что(Что),
not(увлечение(Кто,Что)),!,
42
write("Нет");
кто(Кто),
not(что(_)),!,
write(Кто,".Хобби:"),nl,
ответить_что(Кто);
что(Что),
not(кто(_)),!,
write(Что," является увлечением для:"),nl,
ответить_кто(Что);
!,write("Не понял"),nl.
ответить(Запрос):-
fronttoken(Запрос,Лексема,Остаток),!,
анализ_КтоЧто(Лексема),
ответить(Остаток).
анализ_КтоЧто(Лексема):-
увлечение(Лексема,_),!, assert(кто(Лексема));
увлечение(_,Лексема),!, assert(что(Лексема));
!.
ответить_кто(Что):-
увлечение(
Кто,Что),
write(Кто),nl,
fail.
ответить_кто(_).
ответить_что(Кто):-
увлечение(Кто,Что),
write(Что),nl,
fail.
ответить_что(_).
спросить:-
write("Введите Ваш вопрос:"),nl,
readln(Вопрос),
ответить(Вопрос),!;
!.
Предикат repeat используется в разделе goal для организации цик- write("Нет");
ла по обработке вопросов.
domains кто(Кто),
кто=symbol not(что(_)),!,
что=symbol write(Кто,".Хобби:"),nl,
facts – f1 ответить_что(Кто);
увлечение(кто,что)
кто(кто) что(Что),
что(что) not(кто(_)),!,
predicates write(Что," является увлечением для:"),nl,
nondeterm repeat ответить_кто(Что);
nondeterm ответить(symbol)
ответить_что(кто) !,write("Не понял"),nl.
ответить_кто(что)
анализ_КтоЧто(symbol) ответить(Запрос):-
спросить fronttoken(Запрос,Лексема,Остаток),!,
goal анализ_КтоЧто(Лексема),
consult("hobbyNew.dbs",f1), ответить(Остаток).
repeat, анализ_КтоЧто(Лексема):-
спросить, увлечение(Лексема,_),!, assert(кто(Лексема));
retractall(кто(_)), увлечение(_,Лексема),!, assert(что(Лексема));
retractall(что(_)), !.
write("Есть вопросы? (Д|Н)"), ответить_кто(Что):-
readchar(ДаНет), увлечение(Кто,Что),
ДаНет='Н',exit(). write(Кто),nl,
clauses fail.
repeat. ответить_кто(_).
repeat:-repeat. ответить_что(Кто):-
ответить(""):- увлечение(Кто,Что),
кто(Кто), write(Что),nl,
что(Что), fail.
увлечение(Кто,Что),!, ответить_что(_).
write("Да"); спросить:-
write("Введите Ваш вопрос:"),nl,
кто(Кто), readln(Вопрос),
что(Что), ответить(Вопрос),!;
not(увлечение(Кто,Что)),!, !.
41 42
Страницы
- « первая
- ‹ предыдущая
- …
- 19
- 20
- 21
- 22
- 23
- …
- следующая ›
- последняя »
