Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Экспертная система Пролог, Ошибка 
:(
    Опции темы
lolli
Дата 20.12.2011, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.10.2011

Репутация: нет
Всего: нет



Всем Привет! Есть экспертная система продажи телефонов, некоректно работает выбор телефона подешевле после того как пользователь ответит на вопросы. Помогите пожалуста исправить ошибку. Заранее благодарна!

Код
database
  yes(string)
  no(string)
  maybe(string)

predicates
  repeat
  run
  make_selection(string, integer, integer)
  continue_selection(integer, string, integer)
  tel(string,integer)
  is(string)
  positive(string)
  negative(string)
  xpositive(string)
  xnegative(string)
  ask(string,char)
  remember(string,char)
  delete_all
clauses
  repeat.
  repeat:-repeat.
%-----------------------------------------------------------------------------
% описываем технические характеристики сотового телефона
    tel("Samsung E1070", 890):- positive("цветной дисплей"),positive("емкий аккумулятор"),
           negative("имеет камеру"),
                     negative("имеет FM-радио"),
           negative("имеет Mp3-плеер"),
           is("только для связи").
  
  tel("Nokia 1202", 1000):- positive("цветной дисплей"),positive("емкий аккумулятор"),
                     negative("имеет камеру"),
                     negative("имеет FM-радио"),
           negative("имеет Mp3-плеер"),
           is("только для связи").

  tel("Nokia 1208", 1190):-positive("цветной дисплей"),positive("емкий аккумулятор"),
           negative("имеет камеру"),
                     negative("имеет FM-радио"),
           negative("имеет Mp3-плеер"),
           is("только для связи").



  tel("Nokia 2630", 2490):-positive("цветной дисплей"),positive("емкий аккумулятор"),
          negative ("имеет камеру"),
                     positive ("имеет FM-радио"),
           negative("имеет Mp3-плеер"),
           is("только для связи"), is("развлечения и музыка").

  tel("LG KP105", 1490):- positive("цветной дисплей"),positive("емкий аккумулятор"),
           negative ("имеет камеру"),
                     positive ("имеет FM-радио"),
           negative("имеет Mp3-плеер"),
           is("только для связи").

  tel("LG GB110", 2550):- positive("цветной дисплей"),positive("емкий аккумулятор"),
           negative ("имеет камеру"),
                     positive ("имеет FM-радио"),
          negative ("имеет Mp3-плеер"),
           is("только для связи"), is("развлечения и музыка").

 
  tel("Nokia E52", 12990):- positive("цветной дисплей"), positive ("емкий аккумулятор"),
           positive ("имеет камеру"),
                     positive ("имеет FM-радио"),
           positive ("имеет флэш-карту"),
           negative("имеет навигацию"),
           negative("имеет Mp3-плеер"),
           is("мобильный офис").

  tel("Nokia E66", 11890):- positive("цветной дисплей"), positive ("емкий аккумулятор"),
           positive ("имеет камеру"),
                     positive ("имеет FM-радио"),
           positive ("имеет флэш-карту"),
           negative ("имеет навигацию"),
           negative("имеет Mp3-плеер"),
           is("мобильный офис"),  is("помощник в путешествиях").


  tel("Nokia E63", 13500):- positive("цветной дисплей"), positive ("емкий аккумулятор"),
           positive ("имеет камеру"),
                     positive ("имеет FM-радио"),
           positive ("имеет флэш-карту"),
           negative ("имеет навигацию"),
           negative("имеет Mp3-плеер"),
           is("мобильный офис"),  is("помощник в путешествиях").

  tel("Nokia 5310", 7990):- positive("цветной дисплей"), positive ("емкий аккумулятор"),
           positive ("имеет камеру"),
                     positive ("имеет FM-радио"),
           positive ("имеет флэш-карту"),
           positive ("имеет Mp3-плеер"),
           negative("сенсорный дисплей"),
           positive ("имеет дополнительные клавиши управления Mp3-плеером"),
           is("развлечения и музыка").

  tel("Nokia 5530", 7780):- positive("цветной дисплей"), positive ("емкий аккумулятор"),
           positive ("имеет камеру"),
                     positive ("имеет FM-радио"),
           positive ("имеет флэш-карту"),
           positive ("имеет Mp3-плеер"),
           negative ("сенсорный дисплей"),
           positive ("имеет дополнительные клавиши управления Mp3-плеером"),
           is("развлечения и музыка").

  tel("Nokia 5800", 8890):- positive("цветной дисплей"), positive ("емкий аккумулятор"),
           positive ("имеет камеру"),
                     positive ("имеет FM-радио"),
           positive ("имеет флэш-карту"),
           positive ("имеет Mp3-плеер"),
           negative ("сенсорный дисплей"),
           positive ("имеет дополнительные клавиши управления Mp3-плеером"),
is("развлечения и музыка"), is("мобильный офис"),is ("помощник в путешествиях").

  tel("SonyEricsson W595", 8450):- positive("цветной дисплей"), negative ("емкий аккумулятор"),
           positive ("имеет камеру"),
                     positive ("имеет FM-радио"),
           positive ("имеет флэш-карту"),
           positive ("имеет Mp3-плеер"),
           negative("сенсорный дисплей"),
           negative ("имеет дополнительные клавиши управления Mp3-плеером"),
           is("развлечения и музыка").

  tel("SonyEricsson W395", 7890):- positive("цветной дисплей"), negative ("емкий аккумулятор"),
           positive ("имеет камеру"),
                     positive ("имеет FM-радио"),
           positive ("имеет флэш-карту"),
           positive ("имеет Mp3-плеер"),
           negative("сенсорный дисплей"),
           negative ("имеет дополнительные клавиши управления Mp3-плеером"),
           is("развлечения и музыка").

  tel("Nokia N86", 24790):- positive("цветной дисплей"), positive ("емкий аккумулятор"),
           positive ("имеет камеру"),
                     positive ("имеет FM-радио"),
           positive ("имеет флэш-карту"),
           positive ("имеет навигацию"),
           positive ("имеет Mp3-плеер"),
           negative ("имеет Wi-Fi"),
           positive ("имеет дополнительную клавиатуру"),
           is("помощник в путешествиях"), is("мобильный офис").

  tel("Nokia N97", 27990):- positive("цветной дисплей"), positive ("емкий аккумулятор"),
           positive ("имеет камеру"),
                     positive ("имеет FM-радио"),
           positive ("имеет флэш-карту"),
           positive ("имеет навигацию"),
           positive ("имеет Mp3-плеер"),
           negative ("имеет Wi-Fi"),
           positive ("имеет дополнительную клавиатуру"),
is("помощник в путешествиях"), is("мобильный офис"), is("развлечения и музыка").

  tel("Такой телефон еще не произведен!!!!", 0).

%-----------------------------------------------------------------------------
  is("только для связи"):-positive("звонить и отправлять смс"),!.
  is("мобильный офис"):- positive("смартфон"),!;
                         negative("слушать музыку"),
                         positive("звонить и отправлять смс").
  is("развлечения и музыка"):- positive("слушать музыку"),!;
                               positive("звонить и отправлять смс"),
                               negative("смартфон").
  is("помощник в путешествиях"):-positive("имеет GPS-навигацию").
%-----------------------------------------------------------------------------
% работа с динамической базой данных
  positive(X):-xpositive(X),!; xnegative(X),!,fail; ask(X,'y').
  negative(X):-xnegative(X),!; xpositive(X),!,fail; ask(X,'n').
  ask(X,R):-write(X,"  ?  : "),readchar(Reply),write(Reply,"\n"),
            remember(X,Reply),R=Reply.
% проверка присутствия фактов в динамической базе данных
  xpositive(X):-yes(X);maybe(X).
  xnegative(X):-no(X);maybe(X).
% запоминаем факт в динамической базе данных
  remember(X,'y'):-asserta(yes(X)).
  remember(X,'n'):-assertz(no(X)).
  remember(X,'q'):-asserta(maybe(X)).
% очищаем память от фактов динамической базы данных
delete_all:-retract(yes(_)),delete_all.
delete_all:-retract(no(_)),delete_all.
delete_all:-retract(maybe(_)),delete_all.
delete_all.
%-----------------------------------------------------------------------------
run:-delete_all,
       %repeat,
       write("На вопросы отвечать (y-да, n-нет, q-не знаю).\n"),     
         
    make_selection(X, A, CHOOSE),
    continue_selection(CHOOSE, X, A),
       write("Завершить работу программы (y/n): "),readchar(Z),
       write(Z),nl,
       Z='y', !.

make_selection(X, A, CHOOSE) :- tel(X,A), write("Ваш выбор: ",X," цена: ",A,"\n"),
        write("Устраивает ли вас цена? \n1-да, данная модель меня устраивает\n2-нет, покажите модель по дешевле\n3-нет, покажите модель по дороже"),
        readchar(CHOOSE).

continue_selection('1', X, A) :-  !, write("Ваш выбор: ",X," цена: ",A,"\n"), !.
continue_selection('2', X, A) :-  !, tel(X, Z), Z < A, write("-->>", X, " - ", A).
goal
  makewindow(1,10,12," Экспертная система : СОТОВЫЕ ТЕЛЕФОНЫ ",0,0,25,80),
  write("--------------------------------------------"),nl,
  run.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Добро пожаловать в раздел "Другие языки" форума Vingrad!

Void
Void

Раздел посвящён различным языкам программирования, для которых (в силу невысокой популярности) нет отдельного раздела (GPSS, Lua, MATLAB, Ada, Forth, Smalltalk, Tcl, REXX, AWK и др.)

  • Обязательно следуйте правилам Форума.
  • Пожалуйста, прочитайте и следуйте рекомендациям по работе в разделе и навигации по Форуму.
  • Для вставки текстов исходных кодов используйте подсветку синтаксиса из выплывающего списка Код в форме ответа. Если Ваш язык в списке не представлен, то используйте тег: [code=ваш_язык]код[/code], например, [code=ada]код[/code]. Если в будущем подсветка синтаксиса для указанного языка будет реализована, исходный код преобразится.
  • Помните, один вопрос - одна тема.

Приятного времяпрепровождения! С уважением, Void, kemiisto .

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Другие языки | Следующая тема »


 




[ Время генерации скрипта: 0.0387 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.