Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
2 / 2 / 1
Регистрация: 18.11.2015
Сообщений: 104
1

Clauses for the same predicate should be grouped win_factorial_create

21.10.2018, 20:42. Показов 1175. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем добрый день.
Создаю окно через Code Expert для вычисления факториала.
Вот код:
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
/**************************************************************************
        Creation and event handling for window: Factorial
**************************************************************************/
 
constants
%BEGIN Factorial, CreateParms, 16:35:34-21.10.2018, Code automatically updated!
  win_factorial_WinType = w_TopLevel
  win_factorial_Flags = [wsf_SizeBorder,wsf_TitleBar,wsf_Maximize,wsf_Minimize,wsf_Close,wsf_ClipSiblings,wsf_ClipChildren]
  win_factorial_RCT = rct(100,80,440,240)
  win_factorial_Menu = no_menu
  win_factorial_Title = "Factorial"
  win_factorial_Help = idh_contents
%END Factorial, CreateParms
 
predicates
 
win_factorial_eh:EHANDLER
fact(integer,integer)
 
clauses
  fact(0,1):-!.
  fact(N,F):-N1=N-1,fact(N1,F1),F=N*F1.
  win_factorial_Create(_Parent):-
    win_Create(win_factorial_WinType,win_factorial_RCT,win_factorial_Title,
           win_factorial_Menu,_Parent,win_factorial_Flags,win_factorial_eh,0).
%BEGIN Factorial, e_Create
  win_factorial_eh(_Win,e_Create(_),0):-!,
%BEGIN Factorial, InitControls, 16:35:34-21.10.2018, Code automatically updated!
    win_CreateControl(wc_Text,rct(13,7,109,27),"Введите число",_Win,[wsf_AlignLeft],idct_введите_число),
    win_CreateControl(wc_Edit,rct(139,5,235,29),"",_Win,[wsf_Group,wsf_TabStop,wsf_AutoHScroll,wsf_AlignLeft],id_ввод),
    win_CreateControl(wc_PushButton,rct(7,40,123,63),"Результат",_Win,[wsf_Group,wsf_TabStop],idc_результат),
    win_CreateControl(wc_Text,rct(139,40,235,62),"",_Win,[wsf_AlignLeft],idct_вывод),
%END Factorial, InitControls
%BEGIN Factorial, ToolbarCreate, 16:35:34-21.10.2018, Code automatically updated!
%END Factorial, ToolbarCreate
    !.
%END Factorial, e_Create
%MARK Factorial, new events
 
%BEGIN Factorial, idc_результат _CtlInfo
  win_factorial_eh(_Win,e_Control(idc_результат,_CtrlType,_CtrlWin,_CtlInfo),0):-!,
  EDIT_WIN1=win_GetCtlHandle(_WIN,idc_ввод),
  Text1=win_GetText(EDIT_WIN1),
  str_int(Text1,N),
  fact(N,FN),
  str_int(StrFN,FN),
  EDWIN=win_GetCtlHandle(_WIN,idct_вывод),
  win_SetText(EDWIN,StrFN), 
    !.
%END Factorial, idc_результат _CtlInfo
 
%BEGIN Factorial, e_Size
  win_factorial_eh(_Win,e_Size(_Width,_Height),0):-!,
ifdef use_tbar
    toolbar_Resize(_Win),
enddef
    !.
%END Factorial, e_Size
 
%BEGIN Factorial, e_Menu, Parent window 
  win_factorial_eh(Win,e_Menu(ID,CAS),0):-!,
    PARENT = win_GetParent(Win),
    win_SendEvent(PARENT,e_Menu(ID,CAS)),
    !.
%END Factorial, e_Menu, Parent window
 
%END_WIN Factorial
Пролог начинает ныть:
E;laba12.pro,pos:6610,415 Clauses for the same predicate should be grouped win_factorial_create.
Подскажите пожалуйста, в чём может быть ошибка. Заранее спасибо.

Добавлено через 3 часа 16 минут
Короче, сделал работу заново, заработало. Точно не понял, в чём была причина. Вроде бы, что-то не туда влепил в коде другого окна. Закрывайте тему.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.10.2018, 20:42
Ответы с готовыми решениями:

Error: Clauses for the same predicate should be grouped
/***************************************************************************** Практическое...

This predicate is declared as DB predicate
Среда разработки: Turbo Prolog Исходный код программы: DOMAINS carBrands, ...

Comma in adjective clauses with where
Когда нужно, а когда ненужно ставить запятую в предложении с where?

Initializing clauses for the global fact can be placed only after the GOAL section in the main module: max_seas
Всем доброго времени суток. Не шарю в прологе, как и в других декларативных языках. Прошу помочь...

2
Catstail
21.10.2018, 21:44
  #2

Не по теме:

Эта программа достойна книги рекордов... Таких больших программ для вычисления факториала я не встречал

0
2 / 2 / 1
Регистрация: 18.11.2015
Сообщений: 104
21.10.2018, 21:45  [ТС] 3
Да там суть просто была в создании окна для ввода данных. Выполнял по инструкции)
0
21.10.2018, 21:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.10.2018, 21:45
Помогаю со студенческими работами здесь

Вопрос о Predicate(T) + Find\Remove etc.
Всех приветствую. Назрел очередной вопрос. А именно вот по этому коду из MSDN: ... Point first...

Automapper map func predicate error
Доброе утро, при маппинге предиката имею ошибку AutoMapper (8.1.0) Unmapped members were...

Undeclared predicate, misspelling or not supported on chosen platform length
Здравствуйте! Помогите, пожалуйста, исправить ошибку. Задача: заменить K элементов с конца на...

Cannot use a CONTAINS or FREETEXT predicate on table or indexed view ‘’’’’’ because it is not full-text indexe
SELECT Exp, into #EBD FROM .. where cast ( as date) between '20150217' and...

Исправить ошибку The predicate 'main::posled/2 (i,o)', which is declared as 'procedure', is actually 'determ'
Помогите пожалуйста исправить ошибку Задание такое : Реализовать набор предикатов для...

Как исправить ошибку The predicate 'main::a/2 (o,i)', which is declared as 'procedure', is actually 'determ'
Помогите пожалуйста исправить ошибку. Я только начала изучать prolog и не очень понимаю как ее...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru