[Закрыть]
 
popoff.donetsk.ua
Маленький мальчик с радостью смотрит на птиц и слушает их. Потом появляется «добрый отец» и считает, что он должен «поделиться» опытом и помочь сыну «развиться». Он говорит: «Это сойка, а это воробей». С того момента, как мальчик задумается, где здесь сойка, а где воробей, он перестаёт видеть птиц и слышать их. Он видит и слышит их так, как приучает его отец. /Эрик Берн/
Начало | Новости | Статьи | Форум | Опросы | Карта сайта | Обо мне
popoff.donetsk.ua - Форум - Функциональное и логическое программирование - Как описать Определение подчинённости на прологе?

Как описать Определение подчинённости на прологе?

форумы popoff.donetsk.ua
Страницы: [1]
<< Новый  |  Старый >>  |  Ответ не возможен

Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.

Автор Сообщение
Krion
Александр
Мар, 2006
Сообщений: 19
Krion url://forum.message:1182
Как описать Определение подчинённости на прологе?

Наконец то у меня появилась  куча свободного времени и я с огромным желанием взялся за контрольные за прошлый семестр. Как составить запросы я разобрался, а вот как и где (domains?) описать старшинство не понял. У меня 3-й вариант кто знает дайте совет. Подробнее - Есть один главный сотрудник, ему подчиняются начальники отдела 1...N, Начальникам отделов подчиняются зав. секторами, ну а зав секторам подчиняются руководители групп. В домэинс написал  
   gl_specialist,nach_otdela,zav_sectorom,rucovoditel_grup=symbol
   staj,oklad=integer
наверно нужно описать подчиненность, help to me!

popoff
Yuri
Июл, 2004
Сообщений: 923
popoff url://forum.message:1185

Древообразная структура, как изображено на этой картинке:
http://download.popoff.donetsk.ua/phpclub/tree-clear.gif

Факты, определяющие это дерево. Один факт соответствует одной стрелке. Первый аргумент - начало стрелки, второй - конец стрелки:

arc(1,2).
arc(1,3).
arc(2,4).
arc(2,5).
arc(2,6).
arc(5,7).

Правило, позволяющее определить, является ли одна вершина непосредственным или косвенным ребенком другой:

child(X,Y):-arc(X,Y).
child(X,Z):-arc(X,Y),child(Y,Z).

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.
Krion
Александр
Мар, 2006
Сообщений: 19
Krion url://forum.message:1190

Юрий Васильевич, извините что отрываю Вас, у меня напряг с описанием предиката запросов.
Вопрос который возник  - запрос: Все подчиненные Иванова(с указанием должности), чей стаж работы превышает 10 лет:

vs_podch: - podch(«Иванов»,staj,_).
            podch(X,staj,_),staj>10.

Вроде всё нормально, но что тогда нужно написать в предикате запроса, ведь мы не знаем кто по должности Иванов

может нужно изменить предикат базы данных - написать что то вроде  
   podch(gl_specialist,staj,oklad)
   podch(nach_otdela,staj,oklad)
   podch(zav_sectorom,staj,oklad)
   podch(rucovoditel_grup,staj,oklad)
тогда вроде все нормально, но можно ли так делать?
На данный момент предикат базы данных
   podch(gl_specialist,nach_otdela,zav_sectorom,rucovoditel_grup,staj,oklad)
Наверно где-то я не доганяю. Помогите плиз. Заранее спасибо, и за предыдущий ответ огромное сэнкс.

popoff
Yuri
Июл, 2004
Сообщений: 923
popoff url://forum.message:1192

Можно.

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.
Krion
Александр
Мар, 2006
Сообщений: 19
Krion url://forum.message:1194

Древообразная структура, как изображено на этой картинке:
http://download.popoff.donetsk.ua/phpclub/tree-clear.gif

Факты, определяющие это дерево. Один факт соответствует одной стрелке. Первый аргумент - начало стрелки, второй - конец стрелки:

arc(1,2).
arc(1,3).
arc(2,4).
arc(2,5).
arc(2,6).
arc(5,7).

Правило, позволяющее определить, является ли одна вершина непосредственным или косвенным ребенком другой:

child(X,Y):-arc(X,Y).
child(X,Z):-arc(X,Y),child(Y,Z).

popoffфорумы popoff.donetsk.ua



Огромное спасибо за помощь.

~~~~~ 22 Мар 2006, 01:02 ~~~~~

Доброго времени суток!

Кто хорошо разбирается в запросах помогите советом.
Остался один запрос который не могу понять как реализовать, вроде и перекопал все что находится в интернете (кстати неплохой ресурс http://www.mig19.schel.ac.ru/prolog/archive/TPabout.zip).

Подскажите как можно реализовать запрос, если можно примером

okl_b(name,oklad).      /*Чей оклад больше Сидорова или Петрова*/
.....
.....
okl_b(X,Y):- empl(«Сидоров»,_,_,_,Okl_1),
             empl(«Петров»,_,_,_,Okl_2),
             empl(X,_,_,_,Y),.        

Думаю где смайлик нужно сделать сравнение Okl_1 и Okl_2(но ведь если Okl_1>Okl_2 то пишем Okl_1, а если наоборот(как быть)). Но ведь всё равно запрос будет искать данные из базы, тоесть если кто то еще есть в базе с таким же окладом то и он будет выведен в ответе на запрос.

Помогите пожалуйста.

popoff
Yuri
Июл, 2004
Сообщений: 923
popoff url://forum.message:1209
okl_b("Петров"):-empl("Петров",_,_,_,X),empl("Сидоров",_,_,_,Y),X>Y. okl_b("Сидоров"):-empl("Петров",_,_,_,X),empl("Сидоров",_,_,_,Y),X<Y. okl_b("У Петрова и у Сидорова одинаовый оклад"):-empl("Петров",_,_,_,X),empl("Сидоров",_,_,_,X).

~~~~~ 23 Мар 2006, 16:58 ~~~~~

Новые вопросы лучше задавать в новых топиках...

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.
Krion
Александр
Мар, 2006
Сообщений: 19
Krion url://forum.message:1210

Огромное спасибо за совет и помощь!

Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.

Страницы: [1]
<< Новый  |  Старый >>  |  Ответ не возможен
Вход
Поиск[?]:
Обмен электронных валют
money.dn.ua