Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.
Автор | Сообщение |
Мар, 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! |
|
Июл, 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). ________________________________ Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить. |
|
Мар, 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) Наверно где-то я не доганяю. Помогите плиз. Заранее спасибо, и за предыдущий ответ огромное сэнкс. |
|
Июл, 2004 Сообщений: 923 | popoff url://forum.message:1192 ________________________________ Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить. |
|
Мар, 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, а если наоборот(как быть)). Но ведь всё равно запрос будет искать данные из базы, тоесть если кто то еще есть в базе с таким же окладом то и он будет выведен в ответе на запрос. Помогите пожалуйста. |
|
Июл, 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 ~~~~~ Новые вопросы лучше задавать в новых топиках... ________________________________ Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить. |
|
Мар, 2006 Сообщений: 19 | Krion url://forum.message:1210 Огромное спасибо за совет и помощь!  |
|
Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.