Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Поиск информации в базе данных (Visual Prolog)

440
30 октября 2011 года
[FENIX]
83 / / 29.01.2007
Народ, помогите пожалуйста:


Предметная область – страны мира. Каждая страна может быть описана структурой: название, площадь, географическое положение, население.

Географическое положение может быть описана структурой: часть света, материк, океаны, моря, горные хребты.
Население может быть описано структурой: численность, государственный язык, национальный состав.

Национальный состав может быть описан структурой: национальность, численность, процент от всего населения.
Реализовать следующие типы запросов:
1. Найти страну, которую омывает больше всего морей;
2. Найти все страны, на территории которых находится указанный горный хребет;
3. Найти все страны, у которых число национальностей превышает заданную величину;
4. Найти все горные хребты, находящиеся на территории указанной страны;
5. Найти все страны, у которых численность населения меньше заданной величины


1 и 2 пункты я сделал, а вот остальные никак не могу

Код:
domains
  world=owns(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
   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
  max_Seas(country,byte)%Strana, kotoryi omivaet bolshe vsego morei
  mount_Countries(country,mountain)%Strani, gde prohodit ykazannii goornii hrebet
 
predicates%Eto razdel s procedurami
 
  owns(country, square, geography, population)
  counter( seas,byte)
  member(mountains,mountain)
 
  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("Russia",1600,geo("Eurasia",["Atlantic","Pacific","Northern"],["Black","Barentsevo","Caspiy","Azov"],
               ["Caucasus","Altay","Ural","Camchat"]),pop(145,["Russian"],
               nat(["Russian","Tatari","Ukrain","Caucasus","Mordovthi"],[130,5,1,8,1],[90,2,1,6,1]))).
               
      owns("Poland",314,geo("Eurasia",[],["Baltic"],["Carpats","Sudets"]),pop(36,["Polish"],
               nat(["Russian","Polish"],[1,35],[2,98]))).
               
      owns("China",9597,geo("Eurasia",["Pacific"],["Yellow"],["Tibet","Himalayas","Carakums"]),
               pop(1030,["Chinese"],nat(["Chinese","Corean"],[1020,10],[99,1]))).
               
      owns("Egypt",1001,geo("Africa",[],["Red"],[]),pop(45,["Arab","English"],nat(["Arab","African"],[43,2],[98,2]))).
 
      owns("Usa",9363,geo("America",["Atlantic","Pacific"],["Bering"],["Apalach","Rocky"]),
               pop(232,["English","Spanish"],nat(["American","Spanish"],[222,10],[96,4]))).
                 
      owns("Argentina",2767,geo("America",["Atlantic","Pacific"],[],["Apalach"]),pop(28,["Spanish"],
               nat(["Argentin"],[23],[82]))).
                     
      owns("Australia",7686,geo("Australia",["Pacific"],["Tasman","Coral"],["Flinder","Tibet","Mcdonnel"]),
               pop(14,["English"],nat(["Australian","Newzealander"],[13,1],[97,3]))).
               
      owns("New Zeland",268,geo("Australia",["Pacific"],["Tasman"],["Coock"]),
               pop(3,["English"],nat(["Newzelands"],[3],[100]))).
 
           
   
/*The first question*/
 
counter([],0).%Pystoi spisok (seas,byte)
counter([H|T],N):-counter(T,M),N=M+1.
 
   max_Seas("A",0).
   
   max_seas_country(Country):- owns(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","Tibet").%Strana i gornaya vershina
   
   mountain_countries(Mountain):-owns(Country,_,geo(_,_,_,L),_),member(L,Mountain),write(Country),nl,fail.
   
 
goal
%max_seas_country(C),max_Seas(C,N).
not(mountain_countries("Tibet")).
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог