Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Нужна небольшая помощь.
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Fever Fever вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.04.2010
По умолчанию 22.04.2010, 11:47

Уважаемые помогающие, разрешите извиниться сразу за тему "срочно нужна задача" и в частности. за этого дятла! Дима, я про тебя! Научись разговаривать с нормальными людьми! вежливо в первую очередь! Тебе здесь никто ничего не должен, запомни это. Если люди тебе не ответили, значит заняты! Научись терпеть и ждать! Люди добровольно помогает кто чем может, а ты себя видешь как ***** (можешь поставить любое слово). Если администратор читает данное сообщение, просьба удалить тему "срочно нужа задача" вообще, чтобы не позорить наш город! Заранее спасибо. Надеюсь больше не будем недопонимания, мы будем помогать вам чем можем, а вы нам. надеюсь в этом заитересованны все.

Объясню сразу нашу ситуацию, большенство вновь прибывших из г.Сургута. Начался нвоый предмет, изучаем prolog и Lisp. Но так как время приезда преподавателя ограниченно, скорее всего будет только prolog. Почему обратились к вам? Т.к. время ограниченно и в дальнейшем он почти никому не нужен, просим знающих людей. Мы не совсем бездори, многие хорошо програмируют на Делфи или Си++. Но так уж получилось :wall: .
Это не большое отступление от проблемы, которая возникла у меня.

У меня следующее задание:

1. Написать программу удаления элементов из списка, номера которых заданы другим
списком.

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


Заранее большое спасибо! Если нужно какое нить символическое поощрение, думаю договоримся.
Ответить с цитированием
  (#2 (permalink)) Старый
pavelr pavelr вне форума
Member
 
Сообщений: 207
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.03.2010
По умолчанию 22.04.2010, 12:25

Вот некоторый образец решения 2-й задачи (там,правда,запросы,несколько иные,но суть дела вот такая)
Код:
/*Предметная область – служба знакомств. Каждый клиент может быть описан структурой: фамилия, имя, отчество, характеристика клиента, требования к партнеру, список возможных партнеров. Характеристика клиента и требования к партнеру могут быть описаны одной структурой: возраст, образование, национальность, ежемесячный доход, владение жилой площадью, наличие детей, отсутствие вредных привычек. Возможный партнер может быть описан следующей структурой: фамилия, имя, отчество, характеристика партнера. Характеристика партнера может быть описана структурой, одинаковой со структурой характеристики клиента.
Реализовать следующие типы запросов:
1. Найти самого молодого возможного партнера в БД;
2. Найти клиента, у которого нет возможных партнеров;
3. Найти всех клиентов указанной национальности, не старше указанного возраста;
4. Найти всех партнеров указанного клиента без вредных привычек;
5. Найти всех клиентов, у которых нет детей, и которым подходит партнер, имеющий детей.
*/
domains
фамилия, имя, отчество, национальность, образование = string
дети, привычки, жилая_площадь = string
возраст, доход = integer
партнеры = партнер*
партнер = парт(фамилия, имя, отчество, характеристика_клиента)
характеристика_клиента = характеристика(возраст, образование, национальность, доход, дети, привычки, жилая_площадь)
клиент = клиент(фамилия, имя, отчество, характеристика_клиента, характеристика_клиента, партнеры)

predicates
база_данных_клиентов(клиент)
данные(клиент)
поиск(партнер,партнеры).
поиск_молодой_клиент
%клиент_без_партнера
%клиент_нац_возр(национальность,возраст)
%партнеры_клиента_без_привычек(фамилия, имя, отчество)
%клиент_нет_детей
facts
минимум(integer,фамилия, имя, отчество)
clauses
база_данных_клиентов(клиент("Шулындин", "Александр", "Вадимович",характеристика(39,"Высшее","Русский",25000,"да","нет","да"),
характеристика(30,"Высшее","Русский",10000, "нет","нет","нет"),
[парт("Иванова","Лариса","Сергеевна",характеристика(35,"Высшее","Русский",9000,"нет","нет","да")),
парт("Жданова","Варвара","Валериевна",характеристика(27,"Высшее","Русский",12000,"нет","да","да"))])). 

база_данных_клиентов(клиент("Кондратьев", "Андрей", "Михайлович",характеристика(24, "Высшее", "Русский", 15000, "нет", "нет", "да"),
характеристика(30,"Высшее","Русский",10000, "нет","нет","нет"),
[парт("Иванова","Лариса","Сергеевна",характеристика(36,"Высшее","Русский",9000,"нет","да","нет")),
парт("Сидорова","Анна","Леонидовна",характеристика(34,"Высшее","Русский",12000,"нет","да","нет"))])).

база_данных_клиентов(клиент("Солдусова", "Елена", "Викторовна",характеристика(45,"Высшее","Русский",25000,"нет", "нет", "да"),
характеристика(30,"Высшее","Русский",10000, "да","нет","нет"),
[парт("Попов","Дмитрий","Васильевич",характеристика(17,"Среднее","Русский",7000,"нет","да","да")),
парт("Макитрин","Владимир","Леонидович",характеристика(31,"Высшее","Русский",20000,"да","нет","да")),
парт("Альмендеев","Алексей","Михайлович",характеристика(18,"Высшее","Русский",20000,"да","нет","да"))])).

база_данных_клиентов(клиент("Ефремова", "Лидия", "Николаевна",характеристика(21,"Высшее","Русский",25000,"да", "нет", "да"),
характеристика(25,"Высшее","Русский",10000, "нет","нет","да"),[])).

база_данных_клиентов(клиент("Лисневская", "Ольга", "Андреева",характеристика(27,"Высшее","Татарин",25000,"нет", "нет", "да"),
характеристика(29,"Высшее","Русский",10000, "да","нет","нет"),
[парт("Кадетов","Николай","Васильевич",характеристика(32,"Среднее","Русский",17000,"нет","да","да")),
парт("Маслов","Андрей","Алексеевич",характеристика(9,"Среднее","Русский",10000,"нет","да","нет"))])). 

данные(клиент(_,_,_,характеристика(_,_,_,_,_,_,_),характеристика(_,_,_,_,_,_,_),
_)).

поиск_молодой_клиент :- база_данных_клиентов(клиент(_,_,_,характеристика(_,_,_,_,_,_,_),характеристика(_
,_,_,_,_,_,_),L)),
поиск(парт(Ф,И,О,характеристика(Возраст,_,_,_,_,_,_)),L),минимум(N,Ф1,И1,О1),Воз
раст<N,retract(минимум(N,Ф1,И1,О1)),asserta(минимум(Возраст,Ф,И,О)),fail.
минимум(100,ф,и,о).

%2-Запрос% клиент_без_партнера:- база_данных_клиентов(клиент(Ф,И,О,характеристика(_,_,_,_,_,_,_),характеристика(_
,_,_,_,_,_,_),L)), L=[], write(Ф," ",И," ",О," "), nl.
%3-Запрос%
%клиент_нац_возр(Нац,Возраст):- база_данных_клиентов(клиент(Ф,И,О,характеристика(N,_,Нац,_,_,_,_),характеристика
(_,_,_,_,_,_,_),_)), Возраст>N, write(Ф," ",И," ",О," "), nl, fail.
%4-Запрос%
поиск(H, [H]).
поиск(H,[_|Хвост]):- поиск(H, Хвост).
%партнеры_клиента_без_привычек(Ф, И, О):- база_данных_клиентов(клиент(Ф,И,О,характеристика(_,_,_,_,_,_,_),характеристика(_
,_,_,_,_,_,_),L)), принадлежит(парт(Ф1,И1,О1,характеристика(_,_,_,_,_,"нет",_)),L), write(Ф1," ",И1," ",О1," "), nl, fail.
%5-Запрос%
%клиент_нет_детей:-база_данных_клиентов(клиент(Ф,И,О,характеристика(_,_,_,_,"нет",_,_),характеристика(_,_,_,_,"да",_,_),_)), write(Ф," ",И," ",О," "), nl, fail.
goal
not(поиск_молодой_клиент), минимум(Возраст,Фамилия,Имя,Отчество).
%клиент_без_партнера.
%клиент_нац_возр("Русский",30).
%партнеры_клиента_без_привычек("Солдусова", "Елена", "Викторовна").
%клиент_нет_детей.
Ответить с цитированием
  (#3 (permalink)) Старый
Fever Fever вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.04.2010
По умолчанию 22.04.2010, 12:30

Спасибо, думаю дальше с ней разбрусь, незря же в университете учусь Тем более запросы не сильно отличаются ЕЩе раз спасибо.
Ответить с цитированием
  (#4 (permalink)) Старый
pavelr pavelr вне форума
Member
 
Сообщений: 207
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.03.2010
По умолчанию 22.04.2010, 12:37

Сейчас подумаю,как первую решить.Если не секрет,какой у Вас ВУЗ?Я сам пробую преподавать Prolog в Нижегородском коммерческом институте
Ответить с цитированием
  (#5 (permalink)) Старый
pavelr pavelr вне форума
Member
 
Сообщений: 207
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.03.2010
По умолчанию 22.04.2010, 12:57

Вот первая задача,может быть,не совсем рационально,но первое,что в голову пришло
Код:
domains
i=integer
il=i*
predicates
del(i,il,il)
del1(il,il,il)
um(il,il)
clauses
%Предикат del удаляет из списка элемент с номером N
del(1,[_|T],T):-!.
del(N,[X|T],[X|L]):-N1=N-1,del(N1,T,L).
%Предикат um уменьшает на 1 элементы списка(т.к.если мы удалим эл-т из списка,то порядковые номера сдвинутся на 1
um([],[]):-!.
um([X|T],[X1|T1]):-x1=X-1,um(T,T1).
%Непосредственно предикат удаления из 1 списка элементов с номерами,находящимися во 2 списке
del1(L,[],L):-!.
del1(L,[N1|NT],Res):-del(N1,L,Buf),um(NT,NT1),del1(Buf,NT1,Res).
goal
del1([-4,3,2,99,-34,91,-8,30,19,65],[1,5,8,9,10],L).
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Fever Fever вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.04.2010
По умолчанию 22.04.2010, 13:10

Про университет не скажу, т.к. Возможно наш преподователь бывает и здесь (думаю мысля ясна) Спасибо за первую тоже. Если у кого то еще будут идейки, не откажусь от предлагаемых решений
Ответить с цитированием
  (#7 (permalink)) Старый
pavelr pavelr вне форума
Member
 
Сообщений: 207
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.03.2010
По умолчанию 22.04.2010, 13:45

Если насчет символического поощрения то киньте сколько-нибудь на тел.910-889-02-14
Ответить с цитированием
  (#8 (permalink)) Старый
Fever Fever вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.04.2010
По умолчанию 23.04.2010, 09:37

Большое спасибо за первую задачку, вчера сдал Насчет поощрения не отказываюсь. Сегодня надеюсь буду мимо проходить...
Ответить с цитированием
  (#9 (permalink)) Старый
Fever Fever вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.04.2010
По умолчанию 23.04.2010, 09:38

А, забыл спросить, связь какая? мтс, мегафон ....???
Ответить с цитированием
  (#10 (permalink)) Старый
pavelr pavelr вне форума
Member
 
Сообщений: 207
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.03.2010
По умолчанию 23.04.2010, 12:55

Связь МТС
Ответить с цитированием
  (#11 (permalink)) Старый
Fever Fever вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.04.2010
По умолчанию 24.04.2010, 00:08

Не большое вознаграждение сегодня положил, надеюсь за небольшую помощь, небольшое вознагрождение устроило. Предлагаю сотрудничество дальше, если интересно, жду ответа...
Ответить с цитированием
  (#12 (permalink)) Старый
pavelr pavelr вне форума
Member
 
Сообщений: 207
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.03.2010
По умолчанию 24.04.2010, 01:13

Хорошо,спасибо,давайте дальше общаться!Помогу по мере сил и возможностей
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна небольшая поддержка программистов и радиомастеров. DaniXAK420 Моддинг 0 03.02.2012 17:46
Задачка по матрице, нужная небольшая помощь Darrok.SS Pascal 0 11.01.2012 21:09
нужна небольшая прога на матлабе REDs Задания за деньги 0 24.06.2011 00:08
нужна помощь hastelo Prolog 0 27.04.2010 21:30
нужна помощь! очень нужна! ulana999i999 Prolog 0 17.04.2010 14:13
Нужна небольшая подсказка по клавиатурному хуку Little Delphi 0 17.02.2010 00:06
Очень нужна нужна помощь в решении задачи NecroDevil Prolog 18 16.01.2009 14:22
Нужна небольшая помощь Ex Офтопик 0 27.06.2006 11:26
Нужна небольшая помощь с лабой Wopp Задания за деньги 0 15.05.2006 16:45
Нужна небольшая, шустрая база данных , с самыми основными функциями BreakPointMAN C++ Builder 4 12.04.2006 11:52
нужна помощь NightWolfik Prolog 1 20.12.2005 07:08



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов