![]() |
|
![]() ![]() ![]() |
|
Vovanuch |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 3.2.2006 Репутация: нет Всего: нет |
Доброго времени суток.
Подскажите кто-нить, плз. Надо создать базу, из которой берутся все вопросы (по порядку или в разброс) и в зависимости от ответа (y/n) выводить результат. Вот что написал: :- dynamic y/1, n/0. %база знаний a(1,'Не исправен мотор'). a(2,'Не исправен руль'). a(3,'Нет колеса'). a(4,'Нет педалей'). a(5,'купите лошадь!'). a(6,'все в порядке!'). b(1,'не заводится машина'). b(2,'не могу повернуть при езде'). b(3,'машина стоит косо и не едет'). b(4,'не нажимаются педали'). b(5,'ничего не работает'). go:- sprosit(X). sprosit(X):- b(X,Text),!,write('Верно ли утверждение: '), write(Text),write(' '),nl,read(Z),otvet(X,Z). otvet(M,Z):-Z='y',assert(y(M)). otvet(M,Z):-Z='n',assert(n(M)). Проблема в том, что команда "go."выводит только 1ю запись и прекращает работу. 181 ?- go. Верно ли утверждение: не заводится машина | y. Yes 182 ?- Как заставить выводить все вопросы? И как потом вывести комментарии к тем предложениям, на которые был получен ответ "y"? Заранее спасибо. |
|||
|
||||
FunnyFalcon |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 27.3.2006 Репутация: нет Всего: 7 |
По-моему, зря отрезал (восклицательным знаком).
sprosit:- b(X,Text),write('Верно ли утверждение: '), write(Text),write(' '),nl,read(Z),otvet(X,Z). otvet(M,'y'):-assert(y(M)). otvet(M,'n'):-assert(n(M)). Это сообщение отредактировал(а) FunnyFalcon - 21.12.2006, 18:06 |
|||
|
||||
Vovanuch |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 3.2.2006 Репутация: нет Всего: нет |
1) "sprosit:-" - на это он ругается, т.к. надо описывать с аргументами.
sprosit(Х):- и т.д. 2) Зачем влепил воскл. знак - сам не знаю. Но и без него не работает почему-то. 10 ?- go. Верно ли утверждение: не заводится машина |: y. Yes 11 ?- Это вот "Yes" говорит, что там еще есть что выводить, но почему он не идет на 2й просмотр икса? (Х=2)... ХЗ блин ![]() |
|||
|
||||
Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 6 Всего: 50 |
[
Что-то странное, на каком Прологе делаешь? Я бы примерно так сделал:
Это сообщение отредактировал(а) Artemios - 22.12.2006, 03:17 -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 6 Всего: 50 |
Упс... Возможно, на твоем Прологе вместо "sprosit" нужно "sprosit()" использовать. -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
![]() ![]() ![]() |
Правила форума Prolog | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Prolog | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |