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

Initializing clauses for the global fact can be placed only after the GOAL section in the main module: max_seas

17.11.2018, 17:28. Показов 1202. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток.
Не шарю в прологе, как и в других декларативных языках. Прошу помочь решить проблему.

Вот сам код, почти всё работает, за исключением 1го вопроса, где надо определить страну с количеством морей.

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
global domains
  world= world(country, square, geography, population)
  country = string
  countries=country*
  square = integer
  
  geography = geo(materic, oceans, seas, mountains)
   sea, ocean, mountain, continent, materic = string
   oceans = ocean*
   seas = sea*
   mountains = mountain*
   
  population = pop(quantity  , languages, nations)
   quantity, nquant, quant = integer
   quantities=quantity*
   language = string
   languages = language*
   
   nations = nat(nnames,nquantities, npercent)%National part
   nname = string
   nquantities=nquantity*
   npercent=percent*
   
   percent, nquantity = integer
   count, velichina=integer
   
   
  % list=integer*
  %lists=string*
  % Listint=integer*
   nnames=string*
 
global facts
  max_Seas(country,byte) %Êàæäîé ñòðàíå äà¸ò êîë-âî ìîðåé
  mount_Countries(country,mountain)% Îïðåäåëÿåò ïðèíàäëåæíîñòü êîíêðåòíîãî ãîðíîãî õðåáòà êîíêðåòíîé ñòðàíå
 
predicates
owns(world)
 
  %owns(world(country, square, geography, population)
  counter( seas,byte) %Êàæäîìó ñïèñêó ìîðåé âû÷èñëÿåò èõ êîëè÷åñòâî
  member(mountains,mountain)%Îïðåäåëÿåò, ñîâïàäàåò ëè  mountain ñ ýëåìåíòàìè ñïèñêà mountains
  
  nat_count(nquantities,byte) %Îïðåäåëÿåò, ïðåâûøàåò ëè êîë-âî ýëåìåíòîâ ñïèñêà nquantities ÷èñëî byte
 
 
  quant_count(quantities,byte) %Îïðåäåëÿåò, ìåíüøå ëè êîë-âî ýëåìåíòîâ ñïèñêà quantities ÷åì ÷èñëî byte
  
  
  max_seas_country(Country)%1-st question
  mountain_countries(Mountain)%2-nd question
  national_count(Count)%3-th question
  gornie_hrebti(Country)%4-th question
  chislennost(Velichina)%5-th question
  
  
  
   
   clauses
 
      owns( world("Ðîññèÿ",1600,geo("Åâðàçèÿ",["Àòëàíòè÷åñêèé","Òèõèé","Ñåâåðíûé Ëåäîâèòûé"],["׸ðíîå","Áåðåíöåâî","Êàñïèéñêîå","Àçîâñêîå"],
               ["Caucasus","Altay","Ural","Camchat"]),pop(145,["Ðóññêèé"],
               nat(["Ðóññêèå","Òàòàðû","Óêðàèíöû","Êàâêàçöû","Ìîëäîâàíå"],[130,5,1,8,1],[90,2,1,6,1])))).
               
      owns(world("Ïîëüøà",314,geo("Åâðàçèÿ",[],["Áàëòèéñêîå"],["Êàðïàòû","Ñóäåö"]),pop(36,["Ïîëüñêèé"],
               nat(["Ðóññêèå","Ïîëÿêè"],[1,35],[2,98])))).
               
      owns(world("Êèòàé",9597,geo("Åâðàçèÿ",["Òèõèé"],["Ƹëòîå"],["Òèáåò","Ãèìàëàè"]),
               pop(1030,["Êèòàéñêèé"],nat(["Êèòàéöû","Êîðåéöû"],[1020,10],[99,1])))).
               
      owns(world("Åãèïåò",1001,geo("Àôðèêà",[],["Êðàñíîå"],[]),pop(45,["Àðàáñêèé","Àíãëèéñêèé"],nat(["Àðàáû","Àôðèêàíöû"],[43,2],[98,2])))).
 
      owns(world("ÑØÀ",9363,geo("Àìåðèêà",["Àòëàíòè÷åñêèé","Òèõèé"],["Áåðèíãîâî"],["Àïàëà÷è","Ñêàëèñòûå ãîðû"]),
               pop(232,["English","Spanish"],nat(["Àìåðèêà","Spanish"],[222,10],[96,4])))).
                  
      owns(world("Àðãåíòèíà",2767,geo("Àìåðèêà",["Àòëàíòè÷åñêèé","Òèõèé"],[],["Àïàëà÷è"]),pop(28,["Èñïàíñêèé"],
               nat(["Àðãåíòèíöû"],[23],[82])))).
                     
      owns(world("Àâñòðàëèÿ",7686,geo("Àâñòðàëèÿ",["Òèõèé"],["Òàñìàíîâî"],["Ôëèíäåðñ","Ìàê-Äîííåëë"]),
               pop(14,["Àíãëèéñêèé"],nat(["Àâñòðàëèéöû","Íîâîçåëàíäöû"],[13,1],[97,3])))).
               
      owns(world("Íîâàÿ Çåëàíäèÿ",268,geo("Àâñòðàëèÿ",["Òèõèé"],["Òàñìàíîâî"],["Ãîðà Êóêà"]),
               pop(3,["Àíãëèéñêèé"],nat(["Íîâîçåëàíäöû"],[3],[100])))).
 
           
   
 
 
/*-------------------------------The first question----------------------------------*/
 
counter([],0). %Åñëè ñïèñîê ïóñòîé, òî òî åãî äëèíà=1
counter([H|T],N):-counter(T,M),N=M+1. %Îòäåëÿåì ãîëîâó ñïèñêà ìîðåé îò õâîñòà, è â ñ÷¸ò÷èê   %çàïèñûâàåì N
 
   max_Seas("À",0). %Ïðåäïîëîãàåì, ÷òî ýòî ìàêñèìóì
   
%retract – óäàëåíèå ôàêòà èç ÁÄ
%assertz – äîáàâëåíèå ôàêòà â êîíåö ÁÄ
%Òóò èä¸ò îáû÷íûé àëãîðèòì ïîèñêà ìàêñèìóìà â ìàññèâå. Ïóñòü max_Seas("A",0) – Ñòðàíà ñ %ìàêñèìàëüíûì êîë-âîì ìîðåé. Ïðîõîäèì ïî íàøåé ÁÄ. Åñëè íàì âñòðå÷àåòñÿ ñòðàíà ñ áîëüøèì %êîë-âîì ìîðåé, òî ìû óäàëÿåì èç ÁÄ ñòàðóþ ñòðàíó (ñòàðûé ìàêñèìóì), à íîâóþ ñòðàíó (íîâûé %ìàêñèìóì) çàïèñûâàåì â êîíåö ÁÄ. È ïîòîì âûâîäèì íàøó ñòðàíó íà ýêðàí.
 
 
 
   max_seas_country(Country):- owns(world(Country,_,geo(_,_,L,_),_)),counter(L,N),
      max_Seas(Country1,N1), N>N1,retract( max_Seas(Country1,N1)),
      assertz(max_Seas(Country,N)).
   
   
/*-----------------------------------Second question-------------------------------*/
   member([H|_],H).
   member([_|T],X):-member(T,X).
 
   
  % mount_Countries("B","Òèáåò").%Strana i gornaya vershina
   
%Áåð¸ì 1-þ ñòðàíó èç ÁÄ. Ïðîñìàòðèâàåì ñïèñîê ãîðíûõ õðåáòîâ. Åñëè íóæíûé ãîðíûé õðåáåò â ñïèñêå (ïðåäèêàò member), òî âûâîäèì íà ýêðàí ñòðàíó. Òàêæå ñ îñòàëüíûìè ñòðàíàìè.
 
 
   mountain_countries(Mountain):-owns(world(Country,_,geo(_,_,_,L),_)),member(L,Mountain),write(Country),nl,fail.
   
   
/*----------------------------------3-th question------------------------------------*/
 
nat_count([],0).
nat_count([H|T],K):-nat_count(T,M),K=M+1.
 
 
 
 
 
%Ñìîòðèì 1-þ ñòðàíó èç ÁÄ. Ñìîòðèì ñïèñîê íàöèîíàëüíîñòåé. Åñëè êîë-âî ýëåìåíòîâ ýòîãî ñïèñêà áîëüøå çàäàííîé âåëè÷èíû, òî âûâîäèì ñòðàíó íà ýêðàí. Òàêæå ñ îñòàëüíûìè ñòðàíàìè èç ÁÄ.
 
 
national_count(Count):-owns(world(Country, _, _, pop(_  , _, nat(_,L, _))  )),nat_count(L,K),K>Count,write(Country),nl,fail.
national_count(_).
   
   
 
/*------------------------------4-th question-------------------------------------*/
%gornie_hrebti(Country):-owns(Country, _,geo(_, _, _, _) , _),write(mountains),nl.
%gornie_hrebti(Country):-findall(mountains,owns(Country, _,   geo(_, _, _, mountains), _),M_list   ),write(mountains),nl.
 
%Ó óêàçàííîé ñòðàíû ïðîñòî ðàñïå÷àòûâàåì ñïèñîê ãîðíûõ õðåáòîâ
gornie_hrebti(Country):-owns(world(Country, _, geo(_, _, _, Mountains), _)),write(Mountains),nl.
 
 
/*----------------------------------------5-th question-------------------------------*/
quant_count([],0).
quant_count([H|T],K):-quant_count(T,M),K=M+1.
 
%chislennost(Velichina):-owns(Country, _, _, pop(Quantity  , _, _)),quant_count(L,K),K<Velichina,write(Country),nl,fail.
%chislennost(_).
 
 
 
%Ïîñëåäîâàòåëüíî ïðîõîäèì ïî ÁÄ. Åñëè ó òåêóùåé ñòðàíû ÷èñëåííîñòü íàñåëåíèÿ (Quantity) < çàäàííîé âåëè÷èíû (Velichina), òî âûâîäèì òåêóùóþ ñòðàíó íà ýêðàí
 
chislennost(Velichina):-owns(world(Country, _, _, pop(Quantity, _, _))),Quantity<Velichina,write(Country),nl,fail.
chislennost(_).
 
goal
N=0,X="A",max_Seas(X,N),max_seas_country(X),write(N),fail;
write("Ââåäèòå ãîðíûé õðåáåò: "),readln(X),write("Óêàçàííûé ãîðíûé õðåáåò ðàñïîëàãàåòñÿ íà òåððèòîðèè ñëåäóþùèõ ñòðàí: "),nl,not(mountain_countries(X)),fail;
write("Ââåäèòå ÷èñëî íàöèîíàëüíîñòåé: "),readint(X),nl,write("Ñòðàíû, ÷èñëî íàöèîíàëüíîñòè êîòîðûõ ïðåâûøàåò óêàçàííîå: "),nl,national_count(X),fail;
write("Ââåäèòå ñòðàíó: "),readln(X),nl,write("Ãîðíûå õðåáåòû, ðàñïîëîæåííûå íà òåððèòîðèè óêàçàííîé ñòðàíû: "),nl,gornie_hrebti(X),fail;
write("Ââåäèòå ÷èñëåííîñòü íàñåëåíèÿ: "),readint(X),nl,write("Ñòðàíû, ÷èñëåííîñòü íàñåëåíèÿ êîòîðîé ìåíüøå çàäàííîé: "),nl,chislennost(X).
Не обращайте внимания на иероглифы, из Пролога по-человечески не копируется.
Собственно, выдаёт ошибку "Initializing clauses for the global fact can be placed only after the GOAL section in the main module: max_seas". Как я понял, max_seas должен быть объявлен после секции goal. Я пробовал закомментировать max_seas в секции caluses, тогда просто не обрабатывается 1-ый вопрос. Заранее спасибо, если кто-то чем-то поможет.

Добавлено через 35 минут
Если написать вот так:

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
global domains
  world= world(country, square, geography, population)
  country = string
  countries=country*
  square = integer
  
  geography = geo(materic, oceans, seas, mountains)
   sea, ocean, mountain, continent, materic = string
   oceans = ocean*
   seas = sea*
   mountains = mountain*
   
  population = pop(quantity  , languages, nations)
   quantity, nquant, quant = integer
   quantities=quantity*
   language = string
   languages = language*
   
   nations = nat(nnames,nquantities, npercent)%National part
   nname = string
   nquantities=nquantity*
   npercent=percent*
   
   percent, nquantity = integer
   count, velichina=integer
   
   
  % list=integer*
  %lists=string*
  % Listint=integer*
   nnames=string*
 
global facts
  max_Seas(country,byte) %Êàæäîé ñòðàíå äà¸ò êîë-âî ìîðåé
  mount_Countries(country,mountain)% Îïðåäåëÿåò ïðèíàäëåæíîñòü êîíêðåòíîãî ãîðíîãî õðåáòà êîíêðåòíîé ñòðàíå
 
predicates
owns(world)
 
  %owns(world(country, square, geography, population)
  counter( seas,byte) %Êàæäîìó ñïèñêó ìîðåé âû÷èñëÿåò èõ êîëè÷åñòâî
  member(mountains,mountain)%Îïðåäåëÿåò, ñîâïàäàåò ëè  mountain ñ ýëåìåíòàìè ñïèñêà mountains
  
  nat_count(nquantities,byte) %Îïðåäåëÿåò, ïðåâûøàåò ëè êîë-âî ýëåìåíòîâ ñïèñêà nquantities ÷èñëî byte
 
 
  quant_count(quantities,byte) %Îïðåäåëÿåò, ìåíüøå ëè êîë-âî ýëåìåíòîâ ñïèñêà quantities ÷åì ÷èñëî byte
  
  
  max_seas_country(Country)%1-st question
  mountain_countries(Mountain)%2-nd question
  national_count(Count)%3-th question
  gornie_hrebti(Country)%4-th question
  chislennost(Velichina)%5-th question
  
  
  
   
   clauses
 
      owns( world("Ðîññèÿ",1600,geo("Åâðàçèÿ",["Àòëàíòè÷åñêèé","Òèõèé","Ñåâåðíûé Ëåäîâèòûé"],["׸ðíîå","Áåðåíöåâî","Êàñïèéñêîå","Àçîâñêîå"],
               ["Caucasus","Altay","Ural","Camchat"]),pop(145,["Ðóññêèé"],
               nat(["Ðóññêèå","Òàòàðû","Óêðàèíöû","Êàâêàçöû","Ìîëäîâàíå"],[130,5,1,8,1],[90,2,1,6,1])))).
               
      owns(world("Ïîëüøà",314,geo("Åâðàçèÿ",[],["Áàëòèéñêîå"],["Êàðïàòû","Ñóäåö"]),pop(36,["Ïîëüñêèé"],
               nat(["Ðóññêèå","Ïîëÿêè"],[1,35],[2,98])))).
               
      owns(world("Êèòàé",9597,geo("Åâðàçèÿ",["Òèõèé"],["Ƹëòîå"],["Òèáåò","Ãèìàëàè"]),
               pop(1030,["Êèòàéñêèé"],nat(["Êèòàéöû","Êîðåéöû"],[1020,10],[99,1])))).
               
      owns(world("Åãèïåò",1001,geo("Àôðèêà",[],["Êðàñíîå"],[]),pop(45,["Àðàáñêèé","Àíãëèéñêèé"],nat(["Àðàáû","Àôðèêàíöû"],[43,2],[98,2])))).
 
      owns(world("ÑØÀ",9363,geo("Àìåðèêà",["Àòëàíòè÷åñêèé","Òèõèé"],["Áåðèíãîâî"],["Àïàëà÷è","Ñêàëèñòûå ãîðû"]),
               pop(232,["English","Spanish"],nat(["Àìåðèêà","Spanish"],[222,10],[96,4])))).
                  
      owns(world("Àðãåíòèíà",2767,geo("Àìåðèêà",["Àòëàíòè÷åñêèé","Òèõèé"],[],["Àïàëà÷è"]),pop(28,["Èñïàíñêèé"],
               nat(["Àðãåíòèíöû"],[23],[82])))).
                     
      owns(world("Àâñòðàëèÿ",7686,geo("Àâñòðàëèÿ",["Òèõèé"],["Òàñìàíîâî"],["Ôëèíäåðñ","Ìàê-Äîííåëë"]),
               pop(14,["Àíãëèéñêèé"],nat(["Àâñòðàëèéöû","Íîâîçåëàíäöû"],[13,1],[97,3])))).
               
      owns(world("Íîâàÿ Çåëàíäèÿ",268,geo("Àâñòðàëèÿ",["Òèõèé"],["Òàñìàíîâî"],["Ãîðà Êóêà"]),
               pop(3,["Àíãëèéñêèé"],nat(["Íîâîçåëàíäöû"],[3],[100])))).
 
           
   
 
 
/*-------------------------------The first question----------------------------------*/
 
counter([],0). %Åñëè ñïèñîê ïóñòîé, òî òî åãî äëèíà=1
counter([H|T],N):-counter(T,M),N=M+1. %Îòäåëÿåì ãîëîâó ñïèñêà ìîðåé îò õâîñòà, è â ñ÷¸ò÷èê   %çàïèñûâàåì N
 
  max_Seas("À",0). %Ïðåäïîëîãàåì, ÷òî ýòî ìàêñèìóì
   
%retract – óäàëåíèå ôàêòà èç ÁÄ
%assertz – äîáàâëåíèå ôàêòà â êîíåö ÁÄ
%Òóò èä¸ò îáû÷íûé àëãîðèòì ïîèñêà ìàêñèìóìà â ìàññèâå. Ïóñòü max_Seas("A",0) – Ñòðàíà ñ %ìàêñèìàëüíûì êîë-âîì ìîðåé. Ïðîõîäèì ïî íàøåé ÁÄ. Åñëè íàì âñòðå÷àåòñÿ ñòðàíà ñ áîëüøèì %êîë-âîì ìîðåé, òî ìû óäàëÿåì èç ÁÄ ñòàðóþ ñòðàíó (ñòàðûé ìàêñèìóì), à íîâóþ ñòðàíó (íîâûé %ìàêñèìóì) çàïèñûâàåì â êîíåö ÁÄ. È ïîòîì âûâîäèì íàøó ñòðàíó íà ýêðàí.
 
 
 
   max_seas_country(Country):- owns(world(Country,_,geo(_,_,L,_),_)),counter(L,N),
      max_Seas(Country1,N1), N>N1,retract( max_Seas(Country1,N1)),
      assertz(max_Seas(Country,N)),write(Country," ",N),nl.
   
   
/*-----------------------------------Second question-------------------------------*/
   member([H|_],H).
   member([_|T],X):-member(T,X).
 
   
  % mount_Countries("B","Òèáåò").%Strana i gornaya vershina
   
%Áåð¸ì 1-þ ñòðàíó èç ÁÄ. Ïðîñìàòðèâàåì ñïèñîê ãîðíûõ õðåáòîâ. Åñëè íóæíûé ãîðíûé õðåáåò â ñïèñêå (ïðåäèêàò member), òî âûâîäèì íà ýêðàí ñòðàíó. Òàêæå ñ îñòàëüíûìè ñòðàíàìè.
 
 
   mountain_countries(Mountain):-owns(world(Country,_,geo(_,_,_,L),_)),member(L,Mountain),write(Country),nl,fail.
   
   
/*----------------------------------3-th question------------------------------------*/
 
nat_count([],0).
nat_count([H|T],K):-nat_count(T,M),K=M+1.
 
 
 
 
 
%Ñìîòðèì 1-þ ñòðàíó èç ÁÄ. Ñìîòðèì ñïèñîê íàöèîíàëüíîñòåé. Åñëè êîë-âî ýëåìåíòîâ ýòîãî ñïèñêà áîëüøå çàäàííîé âåëè÷èíû, òî âûâîäèì ñòðàíó íà ýêðàí. Òàêæå ñ îñòàëüíûìè ñòðàíàìè èç ÁÄ.
 
 
national_count(Count):-owns(world(Country, _, _, pop(_  , _, nat(_,L, _))  )),nat_count(L,K),K>Count,write(Country),nl,fail.
national_count(_).
   
   
 
/*------------------------------4-th question-------------------------------------*/
%gornie_hrebti(Country):-owns(Country, _,geo(_, _, _, _) , _),write(mountains),nl.
%gornie_hrebti(Country):-findall(mountains,owns(Country, _,   geo(_, _, _, mountains), _),M_list   ),write(mountains),nl.
 
%Ó óêàçàííîé ñòðàíû ïðîñòî ðàñïå÷àòûâàåì ñïèñîê ãîðíûõ õðåáòîâ
gornie_hrebti(Country):-owns(world(Country, _, geo(_, _, _, Mountains), _)),write(Mountains),nl.
 
 
/*----------------------------------------5-th question-------------------------------*/
quant_count([],0).
quant_count([H|T],K):-quant_count(T,M),K=M+1.
 
%chislennost(Velichina):-owns(Country, _, _, pop(Quantity  , _, _)),quant_count(L,K),K<Velichina,write(Country),nl,fail.
%chislennost(_).
 
 
 
%Ïîñëåäîâàòåëüíî ïðîõîäèì ïî ÁÄ. Åñëè ó òåêóùåé ñòðàíû ÷èñëåííîñòü íàñåëåíèÿ (Quantity) < çàäàííîé âåëè÷èíû (Velichina), òî âûâîäèì òåêóùóþ ñòðàíó íà ýêðàí
 
chislennost(Velichina):-owns(world(Country, _, _, pop(Quantity, _, _))),Quantity<Velichina,write(Country),nl,fail.
chislennost(_).
 
goal
write("Ñòðàíà ñ ìàêñèìàëüíûì êîëè÷åñòâîì ìîðåé: "),nl,max_Seas(C,N),max_seas_country(X),nl,fail;
write("Ââåäèòå ãîðíûé õðåáåò: "),readln(X),write("Óêàçàííûé ãîðíûé õðåáåò ðàñïîëàãàåòñÿ íà òåððèòîðèè ñëåäóþùèõ ñòðàí: "),nl,not(mountain_countries(X)),fail;
write("Ââåäèòå ÷èñëî íàöèîíàëüíîñòåé: "),readint(X),nl,write("Ñòðàíû, ÷èñëî íàöèîíàëüíîñòè êîòîðûõ ïðåâûøàåò óêàçàííîå: "),nl,national_count(X),fail;
write("Ââåäèòå ñòðàíó: "),readln(X),nl,write("Ãîðíûå õðåáåòû, ðàñïîëîæåííûå íà òåððèòîðèè óêàçàííîé ñòðàíû: "),nl,gornie_hrebti(X),fail;
write("Ââåäèòå ÷èñëåííîñòü íàñåëåíèÿ: "),readint(X),nl,write("Ñòðàíû, ÷èñëåííîñòü íàñåëåíèÿ êîòîðîé ìåíüøå çàäàííîé: "),nl,chislennost(X).
И вызвать через ctrl+g, то работает нормально, но это режим отладки. Мне нужно, чтобы нормально через f9 работало.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.11.2018, 17:28
Ответы с готовыми решениями:

Ошибка: Module 'RecFrm' links to module 'Main' which cannot be found in the current project
Есть три формы Main, Rec и RecFrm. Main является главной формой. В Rec uses Main; RecFrm в свою очередь TRecFrm = class(TRec); и ...

Undefined function 'fact' for input arguments of type 'tf'. Error in Untitled (line 5) Wg=fact(Sg);
В матлабе при выполнении кода появляется ошибка clc; Sg=tf(,); R=0.019; Mu=0.1; Wg=fact(Sg); =tfdata(Wg,'v'); Sy=R+Sg; ...

Trace: >> CALL: goal() Unknown clause found goal() Execution terminated No solutions
Люди, добрые помогите новичку) Написала прогу отношений-как в PIE вывести весех племянниц? Очень, очень нужна помощь калеке:cry: Выдаёт- ...

2
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
17.11.2018, 19:07
Лучший ответ Сообщение было отмечено vany200397 как решение

Решение

Цитата Сообщение от vany200397 Посмотреть сообщение
Не обращайте внимания на иероглифы, из Пролога по-человечески не копируется.
Я так понимаю. у вас пятёрка? Эта проблема известная, и не только для Пролога..
Prolog
1
    write("Нет проблем с русскими буквами"),
Установите русский регистр на клавиатуре, после этого копируйте и вставляйте.

Цитата Сообщение от vany200397 Посмотреть сообщение
Собственно, выдаёт ошибку
Не используйте глобальную базу. Поставьте локальную, но именованную базу:
Prolog
1
facts - main
1
2 / 2 / 1
Регистрация: 18.11.2015
Сообщений: 104
17.11.2018, 19:37  [ТС]
Благодарю, всё заработало!
Да, у меня Visual Prolog 5.2.
Скопировал текст программы (теперь рабочей) по Вашему совету, действительно, теперь всё работает.
Ещё раз огромное спасибо!
Вот сам листинг, если кому нужно будет:
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
global domains
  world= world(country, square, geography, population)
  country = string
  countries=country*
  square = integer
  
  geography = geo(materic, oceans, seas, mountains)
   sea, ocean, mountain, continent, materic = string
   oceans = ocean*
   seas = sea*
   mountains = mountain*
   
  population = pop(quantity  , languages, nations)
   quantity, nquant, quant = integer
   quantities=quantity*
   language = string
   languages = language*
   
   nations = nat(nnames,nquantities, npercent)%National part
   nname = string
   nquantities=nquantity*
   npercent=percent*
   
   percent, nquantity = integer
   count, velichina=integer
   
   
  % list=integer*
  %lists=string*
  % Listint=integer*
   nnames=string*
 
facts - main
  max_Seas(country,byte) %Каждой стране даёт кол-во морей
  mount_Countries(country,mountain)% Определяет принадлежность конкретного горного хребта конкретной стране
 
predicates
owns(world)
 
  %owns(world(country, square, geography, population)
  counter( seas,byte) %Каждому списку морей вычисляет их количество
  member(mountains,mountain)%Определяет, совпадает ли  mountain с элементами списка mountains
  
  nat_count(nquantities,byte) %Определяет, превышает ли кол-во элементов списка nquantities число byte
 
 
  quant_count(quantities,byte) %Определяет, меньше ли кол-во элементов списка quantities чем число byte
  
  
  max_seas_country(Country)%1-st question
  mountain_countries(Mountain)%2-nd question
  national_count(Count)%3-th question
  gornie_hrebti(Country)%4-th question
  chislennost(Velichina)%5-th question
  
  
  
   
   clauses
 
      owns( world("Россия",1600,geo("Евразия",["Атлантический","Тихий","Северный Ледовитый"],["Чёрное","Беренцево","Каспийское","Азовское"],
               ["Кавказские горы","Алтайские горы","Уральские горы","Камчатские горы"]),pop(145,["Русский"],
               nat(["Русские","Татары","Украинцы","Кавказцы","Молдоване"],[130,5,1,8,1],[90,2,1,6,1])))).
               
      owns(world("Польша",314,geo("Евразия",[],["Балтийское"],["Карпаты","Судец"]),pop(36,["Польский"],
               nat(["Русские","Поляки"],[1,35],[2,98])))).
               
      owns(world("Китай",9597,geo("Евразия",["Тихий"],["Жёлтое"],["Тибет","Гималаи"]),
               pop(1030,["Китайский"],nat(["Китайцы","Корейцы"],[1020,10],[99,1])))).
               
      owns(world("Египет",1001,geo("Африка",[],["Красное"],[]),pop(45,["Арабский","Английский"],nat(["Арабы","Африканцы"],[43,2],[98,2])))).
 
      owns(world("США",9363,geo("Америка",["Атлантический","Тихий"],["Берингово"],["Апалачи","Скалистые горы"]),
               pop(232,["Английский","Испанский"],nat(["Американцы","Испанцы"],[222,10],[96,4])))).
                  
      owns(world("Аргентина",2767,geo("Америка",["Атлантический","Тихий"],[],["Апалачи"]),pop(28,["Испанский"],
               nat(["Аргентинцы"],[23],[82])))).
                     
      owns(world("Австралия",7686,geo("Австралия",["Тихий"],["Тасманово"],["Флиндерс","Мак-Доннелл"]),
               pop(14,["Английский"],nat(["Австралийцы","Новозеландцы"],[13,1],[97,3])))).
               
      owns(world("Новая Зеландия",268,geo("Австралия",["Тихий"],["Тасманово"],["Гора Кука"]),
               pop(3,["Английский"],nat(["Новозеландцы"],[3],[100])))).
 
           
   
 
 
/*-------------------------------The first question----------------------------------*/
 
counter([],0). %Если список пустой, то то его длина=1
counter([H|T],N):-counter(T,M),N=M+1. %Отделяем голову списка морей от хвоста, и в счётчик   %записываем N
 
  max_Seas("А",0). %Предпологаем, что это максимум
   
%retract – удаление факта из БД
%assertz – добавление факта в конец БД
%Тут идёт обычный алгоритм поиска максимума в массиве. Пусть max_Seas("A",0) – Страна с %максимальным кол-вом морей. Проходим по нашей БД. Если нам встречается страна с большим %кол-вом морей, то мы удаляем из БД старую страну (старый максимум), а новую страну (новый %максимум) записываем в конец БД. И потом выводим нашу страну на экран.
 
 
 
   max_seas_country(Country):- owns(world(Country,_,geo(_,_,L,_),_)),counter(L,N),
      max_Seas(Country1,N1), N>N1,retract( max_Seas(Country1,N1)),
      assertz(max_Seas(Country,N)),write(Country," ",N),nl.
   
   
/*-----------------------------------Second question-------------------------------*/
   member([H|_],H).
   member([_|T],X):-member(T,X).
 
   
  % mount_Countries("B","Тибет").%Strana i gornaya vershina
   
%Берём 1-ю страну из БД. Просматриваем список горных хребтов. Если нужный горный хребет в списке (предикат member), то выводим на экран страну. Также с остальными странами.
 
 
   mountain_countries(Mountain):-owns(world(Country,_,geo(_,_,_,L),_)),member(L,Mountain),write(Country),nl,fail.
   
   
/*----------------------------------3-th question------------------------------------*/
 
nat_count([],0).
nat_count([H|T],K):-nat_count(T,M),K=M+1.
 
 
 
 
 
%Смотрим 1-ю страну из БД. Смотрим список национальностей. Если кол-во элементов этого списка больше заданной величины, то выводим страну на экран. Также с остальными странами из БД.
 
 
national_count(Count):-owns(world(Country, _, _, pop(_  , _, nat(_,L, _))  )),nat_count(L,K),K>Count,write(Country),nl,fail.
national_count(_).
   
   
 
/*------------------------------4-th question-------------------------------------*/
%gornie_hrebti(Country):-owns(Country, _,geo(_, _, _, _) , _),write(mountains),nl.
%gornie_hrebti(Country):-findall(mountains,owns(Country, _,   geo(_, _, _, mountains), _),M_list   ),write(mountains),nl.
 
%У указанной страны просто распечатываем список горных хребтов
gornie_hrebti(Country):-owns(world(Country, _, geo(_, _, _, Mountains), _)),write(Mountains),nl.
 
 
/*----------------------------------------5-th question-------------------------------*/
quant_count([],0).
quant_count([H|T],K):-quant_count(T,M),K=M+1.
 
%chislennost(Velichina):-owns(Country, _, _, pop(Quantity  , _, _)),quant_count(L,K),K<Velichina,write(Country),nl,fail.
%chislennost(_).
 
 
 
%Последовательно проходим по БД. Если у текущей страны численность населения (Quantity) < заданной величины (Velichina), то выводим текущую страну на экран
 
chislennost(Velichina):-owns(world(Country, _, _, pop(Quantity, _, _))),Quantity<Velichina,write(Country),nl,fail.
chislennost(_).
 
goal
write("Страна с максимальным количеством морей: "),max_seas_country(С),max_Seas(C,N),nl,fail;
write("Введите горный хребет: "),readln(X),write("Указанный горный хребет располагается на территории следующих стран: "),nl,not(mountain_countries(X)),fail;
write("Введите число национальностей: "),readint(X),nl,write("Страны, число национальности которых превышает указанное: "),nl,national_count(X),fail;
write("Введите страну: "),readln(X),nl,write("Горные хребеты, расположенные на территории указанной страны: "),nl,gornie_hrebti(X),fail;
write("Введите численность населения: "),readint(X),nl,write("Страны, численность населения которой меньше заданной: "),nl,chislennost(X).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.11.2018, 19:37
Помогаю со студенческими работами здесь

Структура (undefined symbol main in module c0. asm)
#include&lt;stdio.h&gt; #include&lt;conio.h&gt; { int zi; int luna; int an; };

Error: Cannot find module '/app/controllers/main'
Доброго времени суток! Сразу хочу предупредить, на node.js начал писать около часа назад, поэтому практически ничего не знаю Проблема...

Go: cannot find main module; see 'go help modules' Ошибка: процесс завершился с кодом 1
Установил на Win 7x64 вместо golang 1.15 сл. версию - golang 1.16. Программа установилась, но не запускается, пишет сл. сообщение: ...

Макрос который из любого места section code перенесет данные в section data
Нужен макрос который из любого места section code перенесет в section data данные. Для чего это нужно. К примеру что бы не писать вручную...

Как убрать вывод компонента catalog.section.list в компоненте catalog.section
Если нажать на первый уровень каталога рис 1 появляется весь товары этого уровня. Но и выводятся ссылки второго уровня рис 2. Как можно...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru