Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.132.35] |
|
Сообщ.
#1
,
|
|
|
Нужно что бы пролог вывел просто все названия металов,
в столбик, но выбивает ошибку что не использованые предложения! ----------------------------------------------- domains S=String M=Symbol predicates nondeterm Metal(M,S) nondeterm UnMetal(M,S) nondeterm Nabor(M,M) clauses Metal(M,Hidrargirum). Metal(M,Ferum). Metal(M,Aluminium). Metal(M,Titan). Metal(M,Cuprum). Metal(M,Uranium). Metal(M,Franziy). Metal(M,Zinck). Metal(M,Kaliy). Metal(M,Rubidiy). Metal(M,Aurum). Metal(M,Argentum). Metal(M,Magniy). Metal(M,Calciy). Metal(M,Cesium). Metal(M,Radon). Metal(M,Wolfram). Metal(M,Nicel). UnMetal(U,Silicium). UnMetal(U,Oxygen). UnMetal(U,Hydrogen). UnMetal(U,Phosphorus). UnMetal(U,Sulfur). UnMetal(U,Borum). UnMetal(U,Carbon). UnMetal(U,Chlor). UnMetal(U,Selen). UnMetal(U,Arsen). UnMetal(U,Bromium). UnMetal(U,Iodum). UnMetal(U,Argentum). UnMetal(U,Helium). UnMetal(U,Ftor). UnMetal(U,Krypton). UnMetal(U,Xenon). UnMetal(U,Radon). UnMetal(U,Neon). Nabor(X,Y):- Metal(M,X),UnMetal(U,Y),nl,fail. Goal Nabor(X,Y). /*write("Metals are: ",Metal,"Un Metals are",UnMetal).*/ |
Сообщ.
#2
,
|
|
|
А когда это радон стал металлом?
|
Сообщ.
#3
,
|
|
|
Цитата Славян @ А когда это радон стал металлом? Если что UnMetal это Не металы |
Сообщ.
#4
,
|
|
|
А!, пардон. Я увидел вначале, что он объявлен металлом, а более позднее переобъявление не углядел.
|
Сообщ.
#5
,
|
|
|
А в прологе строки разве в кавычки не берутся?
|
Сообщ.
#6
,
|
|
|
Не понял две вещи. Во-первых, почему у Metal и UnMetal первая переменная не связывается вообще. Не проще ли было писать "Metal(Hydrargyrum)." и всё? Тогда вывести все металлы можно было бы запросом Metal(X), без всяких извращений. И во-вторых, что должен возвращать предикат Nabor? У него ни одной истины в описании.
|
Сообщ.
#7
,
|
|
|
В прологе с заглавной буквы пишутся только свободные переменные.
Если очень хочется написать с заглавной, то строка берётся в двойные кавычки, символ - в апострофы. Я убрала заглавные. Константы в прологе начинаются со строчной буквы. domains s=string m=symbol predicates nondeterm Metal(m,s) nondeterm UnMetal(m,s) clauses Metal(m,hidrargirum). Metal(m,ferum). Metal(m,aluminium). Metal(m,titan). Metal(m,cuprum). Metal(m,uranium). Metal(m,franziy). Metal(m,zinck). Metal(m,kaliy). Metal(m,rubidiy). Metal(m,aurum). Metal(m,argentum). Metal(m,magniy). Metal(m,calciy). Metal(m,cesium). Metal(m,radon). Metal(m,wolfram). Metal(m,nicel). UnMetal(u,silicium). UnMetal(u,oxygen). UnMetal(u,hydrogen). UnMetal(u,phosphorus). UnMetal(u,sulfur). UnMetal(u,borum). UnMetal(u,carbon). UnMetal(u,chlor). UnMetal(u,selen). UnMetal(u,arsen). UnMetal(u,bromium). UnMetal(u,iodum). UnMetal(u,argentum). UnMetal(u,helium). UnMetal(u,ftor). UnMetal(u,krypton). UnMetal(u,xenon). UnMetal(u,radon). UnMetal(u,neon). Goal write("Metals are"), nl, Metal(_,X),write(X),nl, readchar(_),fail. Добавлено Если нужно напечатать и металлы, и неметаллы, то ставим такую цель Goal write("Metals are"), nl, Metal(_,X),write(X),nl, readchar(_),fail; nl,write("Unmetals are"),nl,UnMetal(_,X),write(X),nl, readchar(_),fail. |