Error c150 syntax error visual prolog

Syntax error Prolog Решение и ответ на вопрос 2752962

5 / 1 / 1

Регистрация: 28.01.2018

Сообщений: 310

1

16.12.2020, 02:26. Показов 2200. Ответов 4


main.pro(1,1)
error c150 : Syntax error

ругается на первую строчку которая называется domains

Добавлено через 20 минут
помогите,мб я не в том файле пишу или может какието директивы прописать надо
пишу в вижуал пролог 8

Добавлено через 5 часов 39 минут
апну

Добавлено через 25 секунд
апну

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



785 / 589 / 156

Регистрация: 07.10.2013

Сообщений: 1,313

16.12.2020, 09:49

2

Цитата
Сообщение от Yelle
Посмотреть сообщение

мб я не в том файле пишу

а как же вам помочь, если вы ничего не говорите где текст файла?



0



Yelle

5 / 1 / 1

Регистрация: 28.01.2018

Сообщений: 310

16.12.2020, 09:55

 [ТС]

3

arlat, это не важно там просто при любой простой програмке выдает эту ошибку,но если ты не понимаешь сути проблемы то вот такая простая задачка не запускается выдавая туже самую ошибку

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
domains
utype=integer
 
predicates
sum(utype,utype,utype)
 
clauses
sum(0,1,1).
sum(1,2,3).
sum(2,2,4).
 
goal
sum(1,2,3).



0



arlat

785 / 589 / 156

Регистрация: 07.10.2013

Сообщений: 1,313

16.12.2020, 14:57

4

Цитата
Сообщение от Yelle
Посмотреть сообщение

это не важно

важно. вы хоть установили примеры, идущие в поставке, да посмотрели бы хоть один

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
implement main
    open core, console, std
 
domains
    utype=integer.
 
class predicates
    sum : (utype,utype,utype) multi (o,o,o).
 
clauses
    sum(0,1,1).
    sum(1,2,3).
    sum(2,2,4).
 
clauses
    run():-
        foreach
            sum(S1,S2,S3)
        do
            write(S1,S2,S3),
            nl
        end foreach,
        _ = readLine(),
        !.
 
end implement main
 
goal
    main::run.

multi (o,o,o) это для данного случая, для вашей реализации компилятор подскажет
почитайте что-нибудь, ViP 8 это вам не Турбо и даже не ViP 5.2

Миниатюры

Syntax error
 



0



785 / 589 / 156

Регистрация: 07.10.2013

Сообщений: 1,313

16.12.2020, 15:02

5

Цитата
Сообщение от Yelle
Посмотреть сообщение

вижуал пролог 8

так ставьте 9-ку, чего уж там…



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

16.12.2020, 15:02

Помогаю со студенческими работами здесь

Syntax error, не могу понять в чем причина
Доброго времени суток, нашел в интернете страницу с готовой экспертной системой, решил использовать…

Ошибка в коде Syntax error: Operator priority clash
Всем привет. Имеется ошибка Syntax error: Operator priority clash в строке ?-mother(pam,bob); , не…

Ошибка: «Syntax error in clause body, predicate call expected»
Начал только изучать, выкидывает ошибку "Syntax error in clause body, predicate call expected". В…

ошибка syntax error in 50 line at ‘display’ :help:
Ну где здесь ошибка? Вроде с книжки списывал, всё сто раз перепроверял и всё равно эта ошибка…

Syntax error in expression (unexpected `;’, possibly due to bad layout)
При попытке загрузить файл пишет ошибку
ERROR file:.lab3.hs:34 — Syntax error in expression…

Syntax error or access violation 1064 you have an error in your sql syntax[Unix server]
Привет, помогите разобраться, есть движок, при установке движка на openserver движок спокойно…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

5

Содержание

  1. Error c150 syntax error visual prolog
  2. Error c150 syntax error visual prolog
  3. Error c150 syntax error visual prolog
  4. Я выполняю задание для колледжа. Моя программа Prolog имеет 1 синтаксическую ошибку C150. Как отлаживать синтаксис, а затем запрашивать базу знаний?

Error c150 syntax error visual prolog

clauses
classInfo(«whoWotLove», «1.0»).
like(masha, flowers).
like(X, Z):- love(X, Y), like(Y, Z).
love(anna, son(anna)).
love(son(anna), masha).
love(olya, X):- love(anna, X).
z1:- stdio::nl, like(son(anna), flowers), stdio::write(«z1:да»).
z1:- stdio::nl, stdio::write(«z1:нет»).
run():-
console::init(), z1.

end implement main

goal
mainExe::run(main::run).

main.pro(10,5) error c155: The identifier ‘Name’ must start with a lowercase letter

main.pro(12,9) error c150: Syntax error

DOMAINS
Name=anna;masha;olya;flowers;son(Name).
PREDICATES
like(Name, Name).
love(Name, Name).
z1.
z2.
z3.
z4.
z5.
z6.
CLAUSES
like(masha, flowers).
like(X, Z):-love(X, Y),like(Y, Z).
love(anna, son(anna)).
love(son(anna), masha).
love(olya, X):-love(anna, X).
z1:- nl, like(son(anna), flowers), write(«z1 да «).
z1:- nl, write(«z1 нет»).
z2:- nl, love(anna, masha), write(«z2 да «).
z2:- nl, write(«z2 нет»).
z3:- nl, write(«z3 «),like(X, flowers), write(X,»,»),fail.
z3:- nl, write(«больше нет»).
z4:- nl, write(«z4 «),love(olya, X), write(X,»,»),fail.
z4:- nl, write(«больше нет»).
z5:- nl, write(«z5 «), love(X, masha), like(X, flowers), write(X,»,»),fail.
z5:- nl, write(«больше нет»).
z6:- nl, like(anna, flowers),write(«z6 да «).
z6:- nl, write(«z6 нет»).
GOAL
z1,z2,z3,z4,z5,z6.

В версии Visual Prolog 5.2 Ругается на «makewindow», приходилось её закоментировать.
Пишет:
E;Test_Goal, pos: 808, 404 Undeclared predicate, misspelling or not supported on chosen platform makewindow

Проверял в TestGoal.

main.pro(10,5) error c155: The identifier ‘Name’ must start with a lowercase letter идентификатор ‘Name’ должен начинаться с маленькой буквы.
Замените ‘Name’ на ‘name’, ёлы-палы.

makewindow() в семёрке нету. и не надо)))

implement main
open core
domains
name=anna;masha;olya;flowers;son(name).
class predicates
like(name, name). /*пишет ошибку в этой строке (main.pro(12,9) error c150: Syntax error)*/
love(name, name).
z1.

clauses
classInfo(«whoWotLove», «1.0»).
like(masha, flowers).
like(X, Z):- love(X, Y), like(Y, Z).
love(anna, son(anna)).
love(son(anna), masha).
love(olya, X):- love(anna, X).
z1:- stdio::nl, like(son(anna), flowers), stdio::write(«z1:да»).
z1:- stdio::nl, stdio::write(«z1:нет»).
run():-
console::init(), z1.

end implement main

goal
mainExe::run(main::run).

class predicates
like(name, name). /*пишет ошибку в этой строке (main.pro(12,9) error c150: Syntax error)*/

like:(name, name).
И начнёт на режим детерменизма ругаться, наверное)))
Вы бы начали с классического «хелоу ворд», однако.

class predicates
like(name, name). /*пишет ошибку в этой строке (main.pro(12,9) error c150: Syntax error)*/

like:(name, name).
И начнёт на режим детерменизма ругаться, наверное)))
Вы бы начали с классического «хелоу ворд», однако.

На русском языке нормальной литературы по версии 7.3 нет. Вот и приходится по старым книжкам разбираться.

А эту «A Beginners’ Guide to Visual Prolog Version 7.2» ещё не скоро переведут.

На русском языке нормальной литературы по версии 7.3 нет. Вот и приходится по старым книжкам разбираться.

А эту «A Beginners’ Guide to Visual Prolog Version 7.2» ещё не скоро переведут.

Источник

Error c150 syntax error visual prolog

Не могу откомпилировать в Visual Prolog 7.3 задачу «Полицейская головоломка», написанную на Prolog. Суть задачи следующая:
Jean был убит во вторник. Luc, Paul, Alain, Bernard и Louis находятся под подозрением.
Известно что:
— убийцей является тот, кто желал смерти Jean-a, имеет оружие и не имеет алиби на вторник;
— алиби представленное персоной не внушающей доверия не является действительным;
— кто-то мог хотеть смерти Jean-a, если он был заинтересован в его смерти или желал ему отомстить;
— персона модет быть заинтересована в смерти Jean-a, если она наследует его собственность, если должна ему денег или была замечена Jean-ом на месте преступления.

Анкета дала следующие результаты:
— У Luc-a есть алиби на вторник, которое предоставил Bernard;
— У Paul-a есть алиби на вторник, которое предоставил Bernard;
— У Louis-a есть алиби на вторник, которое предоставил Luc;
— У Alain -a есть алиби на четверг, которое предоставил Luc;
— Alain персона не внушающее доверие;
— Paul хотел отомстить Jean-у;
— Luc хотел отомстить Jean-у;
— Bernard является наследником Jean-a;
— Jean является наследником Louis -a;
— Louis должен денег Jean-у;
— Luc должен денег Jean-у;
— Jean видел Alain –a за совершением преступления;
— У Luc-а есть оружие;
— У Louis -а есть оружие;
— У Alain -а есть оружие.
Кто убийца?

Мое решение следующее:
implement main
open core

constants
className = «main».
classVersion = «».

clauses
classInfo(className, classVersion).
domains
name = symbol.
day = symbol.
predicates
person : (name).
alibi : (name,day,name).
persona_non : (name).
mesti : (name).
heir : (name,name).
money : (name).
jean_see : (name).
weapon : (name).
motive : (name).
n_al : (name).
killer : (name).
goal
mainExe::run(main::run).
killer(X),
write(«KILLER -«,X).

clauses
run():-
console::init(),
person(jean).
person(luc).
person(paul).
person(alain).
person(bernard).
person(louis).

alibi(luc,tuesday,bernard). /* У Luc-a есть алиби на вторник, которое предоставил Bernard */
alibi(paul,tuesday,bernard). /* У Paul-a есть алиби на вторник, которое предоставил Bernard */
alibi(louis,tuesday,luc). /* У Louis-a есть алиби на вторник, которое предоставил Luc */
alibi(alain,thursday,luc). /* У Alain -a есть алиби на четверг, которое предоставил Luc */

persona_non(alain). /* Alain персона не внушающее доверие */

mesti(paul). /* Paul хотел отомстить Jean-у */
mesti(luc). /* Luc хотел отомстить Jean-у */

heir(bernard,jean). /* Bernard является наследником Jean-a */
heir(jean,louis). /*Jean является наследником Louis -a */

jean_see(alain). /* Jean видел Alain –a за совершением преступления */

money(louis). /* Louis должен денег Jean-у */
money(luc). /* Luc должен денег Jean-у */

weapon(luc). /* У Luc-а есть оружие */
weapon(louis). /* У Louis -а есть оружие */
weapon(alain). /* У Alain -а есть оружие */

n_al(X) :- not(alibi(X,tuesday,_)), not(alibi(_,tuesday,X)), persona_non(X).
motive(X) :- mesti(X), heir(X,_), jean_see(X), money(X).
killer(X) :- motive(X), weapon(X), n_al(X).

end implement main

Но выдает ошибку при компиляции — e150: Syntax error
Подскажите, пожалуйста.

Источник

Error c150 syntax error visual prolog

У меня установлен swipl.
При нажатии кнопки появляется сообщение об ошибке:

Error occurred running Prolog compiler. Check options.
In the main menu go to ‘Tools / Options / Miscellaneous / Prolog’.
Command string is swipl -c C:Documents and SettingsАдминистраторМои документыNetBeansProjectsNewProjectsrcnewProlo gTemplate.pro .

Произошла ошибка при запуске компилятора Prolog. Проверьте параметры.
В главном меню выберите «Инструменты / Параметры / Разное / Пролог».
Командная строка — swipl -c C: Documents and Settings Администратор Мои документы NetBeansProjects NewProject src newPrologTemplate.pro.

Небольшой опыт работы с NetBeans у меня есть (Groovy) .
Про PROLOG я только читал .
Во взаимодействии NetBeans и PROLOG я, пока надеюсь, полный ноль .
Вобщем просветите невежду :confused.
А если есть русскоязычные материалы в сети по этой теме, просьба
накидать ссылки:837:

Задача, наверное, решена — установил компилятор, прописал путь .
При нажатии на `CompileProlog file` появляется следующее —

Output of running C:Program FilesVisual Prolog 7.4 PEbinvipCompiler.exe C:PROLOGhelloWorldsrchelloWorld.pro is:

This application is created with the Personal Edition of Visual Prolog.
You may NOT distribute it or use it commercially.
See:
Compiling file ‘C:PROLOGhelloWorldsrchelloWorld.pro’
Compiled 9 lines in 0.010 sec (899 lines per second)
C:PROLOGhelloWorldsrchelloWorld.pro(7,1) : error c150: Syntax error
Compilation terminated with code 1

Поэтому просьба, предоставить мне код делающий две вещи, helloWorld и fibonachi, но в такой форме, чтобы окна не исчезали после окончания работы, а дожидались нажатия любой клавиши .

Винитарх, я ввёл первый код, после нажатия
появилось следующее сообщение:

Output of running C:Program FilesVisual Prolog 7.4 PEbinvipCompiler.exe C:PROLOGhelloWorldsrchelloWorld.pro is:

This application is created with the Personal Edition of Visual Prolog.
You may NOT distribute it or use it commercially.
See:
Compiling file ‘C:PROLOGhelloWorldsrchelloWorld.pro’
Compiled 7 lines in 0.100 sec (70 lines per second)
C:PROLOGhelloWorldsrchelloWorld.pro(1,11) : error c223: A class declaration is not found for the implementation ‘main’
Compilation terminated with code 1

«Объявление класса не найдено для реализации ‘main’» — что может значить это сообщение и что надо сделать чтобы исправить ошибку .

Я всё же не вполне понял Вашу цель. С каким именно Prolog Вы хотите работать в NetBeans? Visual Prolog и SWI Prolog — это сейчас фактически разные языки. Вам безразлично какой из них использовать?

И почему Вы решили бросить SWI Prolog и искать дальше? Всего-то оставалось настроить строку запуска..

тогда надо добавить опцию компилятору /I:. /I:d:vipProDirpfc
путь свой поставить надо.

Да. в IDE по BuildScript Preview можно увидеть правильную строку компилятора, ну почти правильную. там есть свои заморочки

Compiler Name«C:Program Filesswiplbinswipl.exe»
Compiler Arguments — пустая
При нажатии кнопки
появилось следующее сообщение:

Output of running «C:Program Filesswiplbinswipl.exe» C:PROLOGhelloWorldsrctest.pl is:

На данный момент я доволен .

При нажатии на кнопку выдается следующее:
Output of running «C:Program Filesswiplbinswipl.exe» C:PROLOGhelloWorldsrcfibonachi.pl is:

Warning: c:/prolog/helloworld/src/fibonachi.pl:13:
Singleton variables: [N]
N = _G2025 ===> fib = 8

Как изменить код чтобы:

Винитарх, всё равно —

Arab = 3497 ===> Rim = MMMCDXCVII
ERROR: c:/prolog/helloworld/src/rimarab.pl:23:
is/2: Type error: `[]’ expected, found `»XX»‘ (a string) («x» must hold one character)
Warning: c:/prolog/helloworld/src/rimarab.pl:23:

Винитарх, надеюсь, что перенос вопроса из темы о Io, побудит Вас ответить на него! Заранее спасибо.

Винитарх, убедительная просьба популярно объяснить что происходит в строке

Output of running «C:Program Filesswiplbinswipl.exe» -c C:PROLOGhelloWorldsrcfibonachi_1.pro is:

Warning: c:/prolog/helloworld/src/fibonachi_1.pro:9:
Clauses of main/0 are not together in the source-file
Earlier definition at c:/prolog/helloworld/src/fibonachi_1.pro:2
Current predicate: fib/2
Use :- discontiguous main/0. to suppress this message
% autoloading prolog_codewalk:must_be/2 from c:/program files/swipl/library/error
. .

Что может значить такое сообщение и как надо исправить код .

Вторая строчка (maun:-) лишняя. Уберите её.

В сообщении об ошибке Вам было сказано, что клозы предиката main должны быть вместе, т.е. сгруппированы.

Получилось следующее (извиняюсь за «простыню»):

Output of running «C:Program Filesswiplbinswipl.exe» -c C:PROLOGhelloWorldsrcfibonachi_1.pro is:

% autoloading prolog_codewalk:must_be/2 from c:/program files/swipl/library/error
% autoloading prolog_debug:backtrace/1 from c:/program files/swipl/library/prolog_stack
% autoloading qsave:current_foreign_library/2 from c:/program files/swipl/library/shlib
% autoloading error:assertion/1 from c:/program files/swipl/library/debug
% autoloading prolog_source:directory_file_path/3 from c:/program files/swipl/library/filesex
% autoloading files_ex:use_foreign_library/2 from c:/program files/swipl/library/shlib
% autoloading prolog_codewalk:portray_clause/1 from c:/program files/swipl/library/listing
% autoloading prolog_codewalk:clause_info/4 from c:/program files/swipl/library/prolog_clause
% autoloading prolog_codewalk:initialization_layout/4 from c:/program files/swipl/library/prolog_clause
% autoloading record:member/2 from c:/program files/swipl/library/lists
% autoloading oset:reverse/2 from c:/program files/swipl/library/lists
% autoloading prolog_codewalk:clause_name/2 from c:/program files/swipl/library/prolog_clause
% Autoloader: iteration 1 resolved 11 predicates and loaded 12 files in 0.340 seconds. Restarting .
% autoloading files_ex:maplist/2 from c:/program files/swipl/library/apply
% autoloading files_ex:permission_error/3 from c:/program files/swipl/library/error
% Autoloader: loaded 11 files in 2 iterations in 0.461 seconds

Источник

Я выполняю задание для колледжа. Моя программа Prolog имеет 1 синтаксическую ошибку C150. Как отлаживать синтаксис, а затем запрашивать базу знаний?

r) Проверьте свою программу Prolog, задав следующие вопросы. Обратите внимание, что в некоторых случаях может быть невозможно избежать получения одного и того же ответа более одного раза для запроса. i) Кто такой муж Сары? ii) Кто такие внуки Элизабет? iii) Кто такие прабабушки? iv) Кто такие сестры-дианы? v) Кто такие дяди Беатрис? Включите распечатку, в которой отображаются ваши запросы и ответы на программы (вы можете просто скопировать это из главного окна SWI-Prologs).

Прежде всего, посмотрите на этот вопрос, где объясняется, как отформатировать ваш код на SO.

Поскольку мы не можем работать с указанным вами кодом, позвольте мне просто дать вам небольшой пример того, из чего состоит ваше задание. Оттуда вы сможете выяснить, что вы должны менять.

Мы рассматриваем следующие факты Пролога:

(Заметим, что мы не пишем имена с прописными буквами, так как Prolog использует заглавные слова для имен переменных.)

Впоследствии мы можем определить понятие бабушки и дедушки. Дедушка и бабушка — это тот, кто был детьми, и у этих детей тоже есть дети. Мы можем написать это очень легко:

Теперь мы можем спросить Prolog:

Во втором запросе мы иллюстрируем мощь объединения Prolog. Мы просим Пролога найти нас каждый X и каждый Y, для которых тело бабушки и дедушки /2 преуспевает. В этом случае это только для billy_the_kid и grandpa_bills, но когда вы расширяете свой набор фактов и добавляете больше людей, этот запрос возвращает все результаты (по отдельности), для которых grandparent/2 преуспевает.

Для получения дополнительной информации ознакомьтесь с этим уроком.

Источник

What’s wrong ? I try to build prolog program but complier throw error number c150 . How to fix

domains
      NAME=string.
      NUM=symbol.
      N=integer.
predicates
      abon(NAME,NUM)
      abonname(NAME,NUM)
      abonnum(NAME,NUM)
      punkt(N)
      menu
      repeat
clauses
      abon(alex,"111234").
      abon(ivan,"123456").
      abon(petr,"135679").
      abon(semen,"141258").
      abon(evgen,"157989").
      abon(dima,"234577").
      abon(semen,"245876").
      abon(oleg,"342588").
      abon(roman,"428576").

      abonname(NAME,NUM):-abon(NAME,NUM),!.
                          abonname(_,"No information about number").
      abonnum(NAME,NUM):-abon(NAME,NUM),!.
                         abonnum("No information about name",_).

      menu:-repeat,write("nomer menu-"),nl,
            write("1-all information"),nl,
        write("2-search by name"),nl,
        write("3-search by number"),nl,
            write("0-exit"),nl,
            readint(N),punkt(N),N=0.

      punkt(N):-N=1,abon(NAME,NUM),
                write(NAME,"-",NUM),nl,fail.
      punkt(N):-N=2,write("Name?:"),nl,readln(NAME),
                abonname(NAME,NUM),write("nomer-",NUM),nl,fail.
      punkt(N):-N=3,write("Number?:"),nl,readln(NUM),
            abonnum(NAME,NUM),write("imya-",NAME),nl,fail.
      punkt(0):-write("Exit").

      repeat.
      repeat:-repeat.

goal
      menu.

rule(1,"блюдо","первое",[1,2]).
rule(2,"блюдо","фастфуд",[1,3]).
rule(3,"блюдо","второе",[1]).
rule(4,"блюдо","салат",[4]).
rule(5,"блюдо","десерт",[5]).
 
rule(6,"первое","суп щавелевый с галушками",[6,10,12,18,27]).
rule(7,"первое","рассольник",[6,12,16,27]).
rule(8,"первое","борщ",[6,12,14]).
rule(9,"первое","куриный суп",[7,11,12]).
rule(10,"первое","суп с фрикадельками",[8,11,12]).
rule(11,"первое","молочный суп",[11,26]).
rule(12,"первое","уха",[9,12]).
 
rule(13,"второе","пюре с котлетой",[8,12,29]).
rule(14,"второе","голубцы",[8,13,14]).
rule(15,"второе","плов",[6,13]).
rule(16,"второе","манты",[8,10,28]).
rule(17,"второе","пельмени",[8,10]).
rule(18,"второе","мясо по-французски",[6,12,20,22]).
rule(19,"второе","рыба фаршированная",[9,24]).
 
rule(20,"фастфуд","пицца",[10,15,17,20,21]).
rule(21,"фастфуд","бутерброд",[10,17,20,22]).
 
rule(22,"салат","зимний",[6,12,16,18,22,29]).
rule(23,"салат","греческий",[15,16,20,21,22]).
rule(24,"салат","хе",[6,19,27]).
rule(25,"салат","красная шапочка",[12,18,20,22,23]).
rule(26,"салат","летний",[15,16,22]).
rule(27,"салат","нежность",[7,12,16,18,20,22]).
 
rule(28,"десерт","блин сладкий",[10,24,26]).
rule(29,"десерт","блин",[10,26]).
rule(30,"десерт","шоколадные конфеты",[24,25]).
rule(31,"десерт","торт",[10,24]).
rule(32,"десерт","мороженое",[26,24,30]).
rule(33,"десерт","мороженое",[26,25,30]).
rule(34,"десерт","мороженое",[26,30]).
rule(35,"десерт","молочный коктейль",[26]).
 
ask(X):-fact(X,"y"),!.
ask(X):-fact(X,"n"),!,fail.
 
ask(1):-write("блюдо должно подаваться горячим/теплым ?"),!,complete(1).
ask(2):-write("блюдо жидкое?"),!,complete(2).
ask(3):-write("блюдо быстрого приготовления?"),!,complete(3).
ask(4):-write("блюдо легкое?"),!,complete(4).
ask(5):-write("блюдо сладкое?"),!,complete(5).
 
ask(6):-write("из мяса?"),!,complete(6).
ask(7):-write("из курицы?"),!,complete(7).
ask(8):-write("из мясного фарша?"),!,complete(8).
ask(9):-write("из рыбы?"),!,complete(9).
ask(10):-write("с тестом / из теста?"),!,complete(10).
 
ask(11):-write("с лапшой?"),!,complete(11).
ask(12):-write("с картофелем?"),!,complete(12).
ask(13):-write("с рисом?"),!,complete(13).
ask(14):-write("с капустой?"),!,complete(14).
 
ask(15):-write("с помидорами?"),!,complete(15).
ask(16):-write("с солеными/свежими огурцами?"),!,complete(16).
ask(17):-write("с колбасой?"),!,complete(17).
ask(18):-write("с яйцом?"),!,complete(18).
ask(19):-write("с морковью?"),!,complete(19).
ask(20):-write("с сыром?"),!,complete(20).
ask(21):-write("с оливками?"),!,complete(21).
ask(22):-write("с майонезом?"),!,complete(22).
 
ask(23):-write("с гранатами?"),!,complete(23).
ask(24):-write("с начинкой?"),!,complete(24).
ask(25):-write("с шоколадом?"),!,complete(25).
ask(26):-write("из молока?"),!,complete(26).
 
ask(27):-write("кисловатое?"),!,complete(27).
ask(28):-write("на пару?"),!,complete(28).
ask(29):-write("традиционное?"),!,complete(29).
ask(30):-write("очень холодное?"),!,complete(30).
 
recognition(X):- rule(N, X, Y, Z), discover(Z), !,
format(' это более всего похоже на %s - %s (правило %d)', X, Y, N),
recognition(Y).
recognition("блюдо"):- write("это блюдо системе не известно!"),nl,!.
recognition("первое"):- write("это блюдо системе не известно, но его состав очень оригинален!"),nl,!.
recognition("второе"):- write("это блюдо системе не известно, но его состав очень оригинален!"),nl,!.
recognition("фастфуд"):- write("это блюдо системе не известно!"),nl,!.
recognition("салат"):- write("это блюдо системе не известно, но его состав очень оригинален!"),nl,!.
recognition("десерт"):- write("это блюдо системе не известно!"),nl,!.
recognition(_).
 
discover([]).
discover([X|Y]):- ask(X), discover(Y).
 
complete(X):- nl, read(Y), assert(fact(X, Y)), Y="y".

Понравилась статья? Поделить с друзьями:
  • Error c1083 cannot open include file no such file or directory
  • Error c000012f wine msi
  • Error c compiler cannot create executables centos
  • Error byte was not declared in this scope
  • Error by extcap pipe