Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2014, 14:42   #1
UF0
 
Регистрация: 09.04.2014
Сообщений: 3
Вопрос Программа на Прологе для проектирования. Создание 4х правил. [PROLOG]

Здравствуйте! Помогите, пожалуйста, решить задачи по созданию 4х правил, выводящих следующее:
1. Cколько вариантов конструкции может быть.
2. Cколько вариантов прокладок может быть.
3. Cписок прокладок.
4. Cреднее число и длина прокладок. (2 правила: 1 для числа, другое - для длины).

Или дайте, пожалуйста, наводку или общий алгоритм.

Текст программы (prolog-код):

Код:
%%  1-2
bearing(sphere,'2.910.01',m6).
bearing(sphere,'2.910.02',m8).
bearing(sphere,'3.910.01',m12).
bearing(sphere,'3.910.02',m16).
 
bearing(notch,'2.911.01',m6).
bearing(notch,'2.911.02',m8).
bearing(notch,'3.911.01',m12).
 
%%  3
pintle('2.213.01',m6,6,8).
pintle('2.213.04',m8,8,12).
pintle('2.213.06',m12,12,26).
 
%%  4-5
lobe(thread,'2.913.05','30_18',m6,16).
lobe(thread,'2.913.06','45_22',m8,20).
lobe(thread,'2.913.09','65_30',m12,38).
 
lobe(prism,'2.913.01','30_18',10,8,12,3,7).
lobe(prism,'2.913.02','45_22',12,8,12,3,7).
lobe(prism,'2.913.07','65_30',25,12,30,8,18).
 
 
%%  6
clutch('2.451.01','45_30','30_18',29).
clutch('2.451.02','60_45','45_22',34).
clutch('3.451.01','60_45','45_22',35).
clutch('3.451.02','90_60','65_30',42).
 
%%  7
gasket('2.217.10','45_30',5).
gasket('2.217.09','45_30',3).
gasket('2.217.07','45_30',2).
gasket('2.217.01','45_30',1).
 
gasket('3.217.10','60_45',5).
gasket('3.217.09','60_45',3).
gasket('3.217.07','60_45',2).
gasket('3.217.01','60_45',1).
 
gasket('3.107.28','90_60',5).
gasket('3.107.27','90_60',3).
gasket('3.107.25','90_60',2).
 
isml(_,[],[]):-!,fail.
isml(X,[[X,N]|T],GasketNode):-C is N+1,GasketNode=[[X,C]|T].
isml(X,[_|T],GasketNode):-isml(X,T,GasketNode).
 
add(CodeGasket,List,New):-isml(CodeGasket,List,New);New=[[CodeGasket,1]|List].
 
%% Набор прокладок
setofgaskets(Platform,Height,New):-Height > 0,gasket(CodeGasket,Platform,Height),New=[[CodeGasket,1]],!.
setofgaskets(Platform,Hrequired,New):-Hrequired > 0,gasket(CodeGasket,Platform,GasketHeight),
    Hnew is Hrequired- GasketHeight,Hnew > 0,
    setofgaskets(Platform,Hnew,List),add(CodeGasket,List,New),!.
 
%%Подвижная часть
mobile(flat_rough, Hmob, _, Platform, CodeLobe,CodeBearing):-
    lobe(thread,CodeLobe,Platform,M,Hmob),
    bearing(notch,CodeBearing,M).
 
mobile(flat_clean, Hmob, _, Platform, CodeLobe,CodeBearing):-
    lobe(thread,CodeLobe,Platform,M,Hmob),
    bearing(sphere,CodeBearing,M).
 
mobile(perf, Hmob, D, Platform, CodeLobe,CodePintle):-
    lobe(thread,CodeLobe,Platform,M,Hmob),
    pintle(CodePintle, M, Dmin, Dmax), D>=Dmin, D=<Dmax.
 
 
 
mobile(cylv, Hmob, D, Platform, CodeLobe,_):-
    lobe(prism,CodeLobe,Platform,Hmob,_,_, Dmin, Dmax), D>=Dmin, D=<Dmax.
 
mobile(cylh, Hmob, D, Platform, CodeLobe,_):-
    lobe(prism,CodeLobe,Platform,Hmob,Dmin,Dmax, _, _), D>=Dmin, D=<Dmax.
 
 
 
%%Приспособление
device(Surf,Height,D,SizeZazh,Platform,CodeClutch,CodeLobe,CodeBearingPintle,GaskList):-
    clutch(CodeClutch,SizeZazh,Platform,HClutch),
    mobile(Surf,Hmob, D, Platform,CodeLobe,CodeBearingPintle),
    Hgask is Height - 30 - HClutch - Hmob,
    Hgask > 0, setofgaskets(SizeZazh,Hgask,GaskList).
На всякий случай, прикладываю и файл с исходным заданием. Если что-то не понятно - постараюсь ответить.
Вложения
Тип файла: rar Задача.rar (288.6 Кб, 5 просмотров)
UF0 вне форума Ответить с цитированием
Старый 09.04.2014, 14:46   #2
UF0
 
Регистрация: 09.04.2014
Сообщений: 3
По умолчанию Мои наработки (функционируют не так, как надо)

На всякий случай привожу.

Для 1го - вот как я хочу сделать:
Код Prolog:
Код:
construct(N):-
device(Surf,100,10,SizeZazh,Platform,CodeClutch,CodeLobe,CodeBearingPintle,GaskList), nl, N1 is N+1, 
write(N1),write(N), fail, construct(N1).
Поскажите, пожалуйста, как устранить в моем коде:
1) проблему с неопределенностью переменной N (т.е. _G3604)?
Попытка устранить её:
Код:
construct(_G3604):-N is 0, nl, construct(N).
После этого N неизменно была 0 внутри "construct(N):-...". Как это устранить?

2) write'ы? Ведь при постановке их в любом месте "construct(N):-..." они будут или повторяться, или после вызова, следующего за fail, не будут вызываться совсем.

Для 2го:
Код Prolog:
Код:
spisokprok([[,],[,]]):-!.
spisokprok([[,],[,],[,]]):-!.
spisokprok([['H1'|_],['H2'|_]]):-spisokprok(['H1'|'H2']).
spisokprok([['H1'|_],['H2'|_],['H3'|_]]):-spisokprok(['H1','H2','H3']).
?-device(...), write(spisokprok(GaskList)).

Т.е. хочу взять все номера прокладок из GasketList, и составить список только из этих номеров. Но почему-то все равно выводится все содержимое GasketList - так быть не должно. Почему правило не работает?


Вопросы верхнего топика (все остальные) всё также пока открыты.
UF0 вне форума Ответить с цитированием
Старый 09.04.2014, 18:33   #3
UF0
 
Регистрация: 09.04.2014
Сообщений: 3
По умолчанию

Друзья, помогите отладить готовые правила!
UF0 вне форума Ответить с цитированием
Старый 10.04.2014, 04:15   #4
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Я наблюдаю, что на хардфоруме уже помогли или активно помогают. Зачем же дублировать это на остальных форумах?
rrrFer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программы для Вэб проектирования Марсель21 HTML и CSS 5 21.02.2012 13:45
Программа для проектирования БД Пепел Феникса Общие вопросы по программированию, компьютерный форум 4 15.02.2012 09:59
использование платного ПО для проектирования Domanoff Свободное общение 4 11.06.2010 13:33
Для создания файла правил выгрузки в xml формате чем пользоваться и как? Аэлита Ивановна Помощь студентам 0 15.02.2010 12:53
Добавление новых правил для пользователей форума.. Mr.Qwerty О форуме и сайтах клуба 17 04.09.2009 00:04