Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 8

Strawberry Prolog

18.05.2014, 23:22. Показов 3559. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Жизненно необходимо запустить этот код в среде Strawberry prolog. В Turbo Prolog всё работает. Помогите исправить. Вылетают ошибки
Error 16: Instead of variable what is expected here is something like an infix operator or a full stop. (line 41, before the first clause)
Error 16: Instead of the atom topic what is expected here is something like an infix operator or a full stop. (line 47, before the first clause)
Warning 4: The string >< is not an operator. (line 111, after clause 21)
Error 16: Instead of the atom >< what is expected here is something like an infix operator or a full stop. (line 111, after clause 21)
3 errors, 1 warning.


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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
/*  ”*©« EXSYS3.PRO  */
/*  ?ªá¯¥àâ**ï á¨á⥬*,¡*§¨àãîé*ïáï ** «®£¨ª¥,       */
/*  ¯à¥¤**§**ç¥** ¤«ï ¢ë¡®à* ªà¨â¥à¨ï ®¯â¨¬*«ì*®á⨠ */
 
    domains
        CONDITIONS     = BNO *
        HISTORY        = RNO *
        RNO, BNO       = INTEGER   
        CATEGORY       = STRING
    database
 
/*  ?।¨ª*âë ¡*§ë ¤***ëå                             */
    
        rule(RNO, CATEGORY, CATEGORY, CONDITIONS)
        cond(BNO, STRING)
        yes(BNO)
        no(BNO)
        topic(STRING)
    predicates
 
/*  ?।¨ª*âë á¨áâ¥¬ë ¯®«ì§®¢*⥫ì᪮£® ¨*â¥à䥩á*    */
 
        do_expert_job
        do_consulting
        info(CATEGORY)
        goes(CATEGORY)
        eval_reply(HISTORY,STRING)
        wr_list(CONDITIONS)
        listfg
        clear
        
/*  ?।¨ª*âë ¬¥å**¨§¬* ¢ë¢®¤*                        */
 
        go(HISTORY, CATEGORY)
        check(RNO, HISTORY, CONDITIONS)
        inpo(HISTORY, RNO, BNO, STRING)
        do_answer(HISTORY, RNO, STRING, BNO, STRING)
 
    goal
 
        do_expert_job.
    
    clauses
 
/*  ?*§* §***¨© (?‡)                                  */
 
        topic("avto").
                
        rule(1,  "avto", "off_road", [1,5]).
        rule(2,  "avto", "in_road", [2,3]).
        rule(3,  "avto", "in_road ", [2,4]).
        rule(4,  "off_road", "Niva", [7]).
        rule(5,  "off_road", "UAZ", [8]).
        rule(6,  "in_road", "VAZ 2108", [7]).
        rule(7,  "in_road", "VAZ 21099", [6]).
        rule(8,  "in_road ", "VAZ 2101", [6]).
 
        cond(1,  "Klirens high?"                 ).
        cond(2,  "Klirens low?"                 ).
        cond(3,  "Peredniy privod?"                 ).
        cond(4,  "Zadniy privod?"       ).
        cond(5,  "Polniy privod?"        ).
        cond(6,  "Sedan?"                       ).
        cond(7,  "Hatchbek?"                      ).
        cond(8,  "Tent?"                       ).
 
/*  ‘¨á⥬* ¯®«ì§®¢*⥫ì᪮£® ¨*â¥à䥩á*               */
 
        do_expert_job :-
            makewindow(1,7,7," ?Š‘?…?’?€Ÿ ‘ˆ‘’…Œ€ ",0,0,25,80),
            clearwindow,
            shiftwindow(1),
            write("***************************************"),
            write("***************************************"),
            write("‚ë¡®à ªà¨â¥à¨ï ®¯â¨¬*«ì*®á⨠¯à¨ à*á¯à¥¤¥«¥*¨¨ "),
            write("¯à®£à*¬¬ ¯® ã஢*ï¬ ¯*¬ïâ¨"),nl,
            write("–¥«¥¢*ï äã*ªæ¨ï ªà¨â¥à¨ï ¬®¦¥â ¢ª«îç*âì ¢ ᥡï "),
            write("á«¥¤ãî騥 ¢ë室*ë¥ ¯*à*¬¥âàë:"),nl,
            write("   ?1 - ®¡ê¥¬ ¨á¯®«ì§ã¥¬®© Ž?"),nl,
            write("   ?2 - §*£à㧪* ¤¨áª®¢"),nl,
            write("   ?3 - ¢à¥¬ï ®â¢¥â* ?‚Œ"),nl, 
            do_consulting,
            nl,write(" ?*¦¬¨â¥ «î¡ãî ª«*¢¨èã. "),
            readchar(_),
            exit.
                                      
        do_consulting :-
            goes(Mygoal),
            go([],Mygoal),
            !.
        do_consulting :-
            nl,write("ˆ§¢¨*¨â¥, ï *¥ ¬®£ã ‚*¬ ¯®¬®çì. "),
            clear.
        do_consulting.
        
        goes(Mygoal) :-
            clear,
            write("–¥«ì(«¨¡® ?):"),
            readln(Mygoal),
            info(Mygoal),!.
            
        info("?") :-
            clearwindow,
            listfg,
            nl,write(" ?*¦¬¨â¥ «î¡ãî ª«*¢¨èã. "),                                    
            readchar(_),
            clearwindow,
            exit.
            
        info(X) :-
            X >< "?".
                
        listfg :-
            write("’¨¯ë ªà¨â¥à¨¥¢: "),nl,nl,
            topic(Fgoal),
            write("        ",Fgoal),nl,
            fail.
            
        listfg.                 
         
        inpo(HISTORY,RNO,BNO,TEXT) :-
            write("‚®¯à®á :- ",TEXT,"(yes/no)?"),
            readln(RESPONSE),
            do_answer(HISTORY,RNO,TEXT,BNO,RESPONSE).
               
        /*     Œ¥å**¨§¬ ¢ë¢®¤*                     */
 
        eval_reply(_,"yes") :-
            write("Ÿ à*¤ ¡ë« ¯®¬®çì ‚*¬ !").
        eval_reply(_,"no") :-
            write("Š á®¦*«¥*¨î ï *¥ ¬®£ã ‚*¬ ¯®¬®çì.").     
 
        eval_reply([RNO|_],"how") :-
            nl,write("‚ë á®®¡é¨«¨, çâ®:"),nl,
            findall(X,yes(X),LIST),
            wr_list(LIST),
            write("‚ë ®âà¨æ*¥â¥,çâ®:"),nl,
            findall(X,no(X),LIST1),
            wr_list(LIST1),
            write("‘«¥¤®¢*⥫ì*®,ãá«®¢¨ï"),nl,
            rule(RNO,TEXT,Mygoal,LIST2),
            write("   ",TEXT),nl,   
            wr_list(LIST2),
            write("¤«ï ¢ë¡®à* ªà¨â¥à¨ï ",Mygoal," ¢ë¯®«*¥*ë"),nl,!.
 
        wr_list([X|Xs]) :-
            cond(X,TEXT),
            write("   ",TEXT),
        write("  ", X), /* */
        nl,
            wr_list(Xs).
        wr_list([]).    
 
        go(HISTORY,Mygoal) :-
            not(rule(_,Mygoal,_,_)),!,
            write("?।«*£*¥âáï ¨á¯®«ì§®¢*âì ",Mygoal),nl,
            write(**¬ ¯®¤å®¤¨â ? (yes/no/how) "),
            readln(R),
            eval_reply(HISTORY,R).          
        go(HISTORY,Mygoal) :-
            rule(RNO,Mygoal,NY,COND),
            check(RNO,HISTORY,COND),
            go([RNO|HISTORY],NY).
                
        check(RNO,HISTORY,[BNO|REST]) :-
            yes(BNO),!,
            check(RNO,HISTORY,REST).
        check(_,_,[BNO|_]) :- no(BNO),!,fail.
        check(RNO,HISTORY,[BNO|REST]) :-
            cond(BNO,TEXT),
            inpo(HISTORY,RNO,BNO,TEXT),
            check(RNO,HISTORY,REST).
        check(_,_,[]).
        
        do_answer(_,_,_,BNO,"yes") :-
            assert(yes(BNO)).
        do_answer(_,_,_,BNO,"no") :-
            assert(no(BNO)),
            fail.
            
        clear :- retract(yes(_)),retract(no(_)),fail,!.
        clear.
        
        /*              ª®*¥æ ¯à®£à*¬¬ë             */
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.05.2014, 23:22
Ответы с готовыми решениями:

Strawberry Prolog
parent(volodya, nina). parent(volodya, sveta). parent(katya, nina). parent(katya, sveta). parent(mitya, valera). parent(polya,...

Strawberry Prolog
Составьте собственные примеры с числом фактов n=10. Проверьте производство новых фактов из составленных вами.файл.

Strawberry prolog
Здравствуйте. помогите пожалуйста перенести программу написанную в Prolog в Strawberry prolog. (ввести нужно родителей и детей и узнать...

5
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
19.05.2014, 15:31
Вот прямо со всеми кракозябрами и запустить?

1) Уберите полностью разделы domains, predicates. Оставьте только раздел clauses (без самого слова clauses).
2) Оператор "не равно" (111) в Strawberry пишется явно как-то по-другому. Попробуйте=\=. Хотя, на мой вкус, лучше \=
3) Предикаты makewindow, clearwindow, shiftwindow - убрать (или переписать)

Будут еще ошибки - выкладывайте
0
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 8
19.05.2014, 18:04  [ТС]
Кракозябры в принципе не играют роли, потом перепишу латиницей.

Всё сделал как Вы сказали, теперь ошибка
Error 16: Instead of the atom rule what is expected here is something like an infix operator or a full stop. (line 16, before the first clause)
1 error, 0 warnings.
0
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
19.05.2014, 23:32
Ну и как я узнаю, что там теперь
Цитата Сообщение от SashkaALEKSIN Посмотреть сообщение
(line 16, before the first clause)
Добавлено через 1 минуту
Цитата Сообщение от SashkaALEKSIN Посмотреть сообщение
Кракозябры в принципе не играют роли, потом перепишу латиницей.
Кракозябры мешают лично мне посмотреть Вашу программу.
0
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 8
20.05.2014, 01:07  [ТС]
Вот исправленный код, кракозябры переписал

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
    database
    
        rule(RNO, CATEGORY, CATEGORY, CONDITIONS)
        cond(BNO, STRING)
        yes(BNO)
        no(BNO)
        topic(STRING)
 
        go(HISTORY, CATEGORY)
        check(RNO, HISTORY, CONDITIONS)
        inpo(HISTORY, RNO, BNO, STRING)
        do_answer(HISTORY, RNO, STRING, BNO, STRING)
 
    goal
 
        do_expert_job.
 
        topic("avto").
                
        rule(1,  "avto", "off_road", [1,5]).
        rule(2,  "avto", "in_road", [2,3]).
        rule(3,  "avto", "in_road ", [2,4]).
        rule(4,  "off_road", "Niva", [7]).
        rule(5,  "off_road", "UAZ", [8]).
        rule(6,  "in_road", "VAZ 2108", [7]).
        rule(7,  "in_road", "VAZ 21099", [6]).
        rule(8,  "in_road ", "VAZ 2101", [6]).
 
        cond(1,  "Klirens high?"                 ).
        cond(2,  "Klirens low?"                 ).
        cond(3,  "Peredniy privod?"                 ).
        cond(4,  "Zadniy privod?"       ).
        cond(5,  "Polniy privod?"        ).
        cond(6,  "Sedan?"                       ).
        cond(7,  "Hatchbek?"                      ).
        cond(8,  "Tent?"                       ).
 
 
        do_expert_job :-
            do_consulting,
            nl,write("Nazhmite lubuyu klavishu"),
            readchar(_),
            exit.
                                      
        do_consulting :-
            goes(Mygoal),
            go([],Mygoal),
            !.
        do_consulting :-
            nl,write("Izvinite, ne mogu vam pomoch"),
            clear.
        do_consulting.
        
        goes(Mygoal) :-
            clear,
            write("Cel' libo ?"),
            readln(Mygoal),
            info(Mygoal),!.
            
        info("?") :-
            clearwindow,
            listfg,
            nl,write("Nazhmite lubuyu klavishu"),                                    
            readchar(_),
            clearwindow,
            exit.
            
        info(X) :-
            X \= "?".
                
        listfg :-
            write("Tipi kriteriev"),nl,nl,
            topic(Fgoal),
            write("        ",Fgoal),nl,
            fail.
            
        listfg.                 
         
        inpo(HISTORY,RNO,BNO,TEXT) :-
            write("Vopros :- ",TEXT,"(yes/no)?"),
            readln(RESPONSE),
            do_answer(HISTORY,RNO,TEXT,BNO,RESPONSE).
               
        /*     Œ¥å**¨§¬ ¢ë¢®¤*                     */
 
        eval_reply(_,"yes") :-
            write("Rad bil pomoch!").
        eval_reply(_,"no") :-
            write("Izvinite, ne mogu vam pomoc").     
 
        eval_reply([RNO|_],"how") :-
            nl,write("Vi soobchili, chto:"),nl,
            findall(X,yes(X),LIST),
            wr_list(LIST),
            write("Vi otricaete, chto:"),nl,
            findall(X,no(X),LIST1),
            wr_list(LIST1),
            write("Sledovatel'no usloviya"),nl,
            rule(RNO,TEXT,Mygoal,LIST2),
            write("   ",TEXT),nl,   
            wr_list(LIST2),
            write("Dlya vibora kriteriya",Mygoal," vipolneni"),nl,!.
 
        wr_list([X|Xs]) :-
            cond(X,TEXT),
            write("   ",TEXT),
        write("  ", X), /* */
        nl,
            wr_list(Xs).
        wr_list([]).    
 
        go(HISTORY,Mygoal) :-
            not(rule(_,Mygoal,_,_)),!,
            write("Predlagaetsya ispol'zovat'",Mygoal),nl,
            write("On vam podhodit? (yes/no/how) "),
            readln(R),
            eval_reply(HISTORY,R).          
        go(HISTORY,Mygoal) :-
            rule(RNO,Mygoal,NY,COND),
            check(RNO,HISTORY,COND),
            go([RNO|HISTORY],NY).
                
        check(RNO,HISTORY,[BNO|REST]) :-
            yes(BNO),!,
            check(RNO,HISTORY,REST).
        check(_,_,[BNO|_]) :- no(BNO),!,fail.
        check(RNO,HISTORY,[BNO|REST]) :-
            cond(BNO,TEXT),
            inpo(HISTORY,RNO,BNO,TEXT),
            check(RNO,HISTORY,REST).
        check(_,_,[]).
        
        do_answer(_,_,_,BNO,"yes") :-
            assert(yes(BNO)).
        do_answer(_,_,_,BNO,"no") :-
            assert(no(BNO)),
            fail.
            
        clear :- retract(yes(_)),retract(no(_)),fail,!.
        clear.
0
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
20.05.2014, 04:27
Забыл написать, что раздел database тоже нужно убрать.
Вообще, остается только clauses без заголовка.

А вместо
Prolog
1
2
goal 
  do_expert_job.
нужно написать
Prolog
1
?- do_expert_job.
Программа запускается, но не работает.
Похоже, в Strawberry какие-то не такие предикаты ввода-вывода.
Надо рыть примеры

Добавлено через 2 часа 3 минуты
Походу этот sStrawberry вообще не заточен под консоль.
Вероятно, нужно переписывать под диалог
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.05.2014, 04:27
Помогаю со студенческими работами здесь

strawberry prolog логика
Всем, здравствуйте, если есть возможность помогите пожалуйста.Задача на strawberry prolog/ Звучит она так: Отец дал для каждой из...

Strawberry prolog списки
найти N-ый элемент списка. подскажите пожалуйста, сделала вот так: appened(,1,H). appened(,N,):- N &gt; 1, Nn is N -...

Считывание из файла на Strawberry Prolog
Для заданного списка строк-слов сформировать строку-предложение, в которую записаны строки-слова списка, разделенные пробелами. В...

Strawberry prolog звания офицеров
Всем привет! Если кому не трудно, можете сделать задачу по strawberry prolog следующего содержания : В Н-ской части служили 5 офицеров:...

Конструкторское бюро[Strawberry Prolog]
Привет всем!!!Помогите Пожалуйста решить задачку (используется среда Strawberry Prolog). В конструкторском бюро работает от 10 до 15...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru