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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2013, 21:53   #1
pushok1606
Новичок
Джуниор
 
Регистрация: 19.02.2013
Сообщений: 5
Восклицание Пролог. Выбор маршрута движения метро с минимальным расстоянием проезда

Курсачь по Prologу.. Выбор маршрута движения метро с минимальным расстоянием проезда


Есть "плагиатный" код:
Код:
DOMAINS
	расстояние= integer
	нач_точ=symbol
	кон_точ=symbol
	список= symbol *
	l=integer*
predicates
	nondeterm member(symbol,список)
	nondeterm проезд(нач_точ,расстояние,кон_точ)
	nondeterm возможен(symbol,symbol,список,список,integer,integer)
	nondeterm min1(real,l)
 	nondeterm min2(integer,l)
 	nondeterm run
clauses
/******** База фактов **************************************/
проезд(т1,27,т2).	проезд(т2,27,т1).	проезд(т3,30,т1).
проезд(т1,30,т3).	проезд(т2,51,т3).	проезд(т3,51,т2).
проезд(т1,40,т6).	проезд(т2,45,т4).	проезд(т3,33,т4).
проезд(т1,25,т9).	проезд(т2,41,т5).	проезд(т3,15,т9).
				проезд(т2,20,т6).
				проезд(т2,45,т13).

проезд(т4,33,т3).	проезд(т5,52,т4).	проезд(т6,40,т1).
проезд(т4,45,т2).	проезд(т5,41,т2).	проезд(т6,20,т2).
проезд(т4,52,т5).	проезд(т5,54,т6).	проезд(т6,54,т5).
проезд(т4,20,т10).	проезд(т5,19,т5).	проезд(т6,32,т13).
				проезд(т5,27,т12).
				проезд(т5,19,т14).

проезд(т7,31,т9).	проезд(т9,31,т7).	проезд(т11,44,т10).
проезд(т8,24,т9).	проезд(т9,24,т8).	проезд(т11,28,т12).
проезд(т10,20,т4).	проезд(т9,25,т1).
проезд(т10,44,т11).	проезд(т9,15,т3).

проезд(т12,28,т11).	проезд(т13,32,т6).	проезд(т14,19,т5).
проезд(т12,27,т5).	проезд(т13,45,т2).

member(X, [X| _]).
member(X, [_|List]) :- 
      member(X, List).   %правило1
/*Проверяет принадлежность элемента списку*/

min1(_,[]).	
 min1(M,[X|List]):- M<=X, min1(M,List).   %правило2
 min2(M,[X|List]):- M=X, min1(M,List), !; min2(M,List),M<X.   %правило3
 /*Ищет минимальный элемент списка*/

возможен(С,С,_,[С],0,_).                                                       ***
возможен(Beg,End,Список,[Beg,Beg2|Path],Sum,Rway) :-            ***
	проезд(Beg,Way,Beg2), 
	not(member(Beg2,Список)), 
	Rway2=Rway+Way,
	возможен(Beg2,End,[Beg2|Список],[Beg2|Path],Tmp,Rway2),   ***
	Sum=Tmp+Way.   %правило4
/*Ищет возможные пути проезда из одной точки в другую и считает расстояние пройденного маршрута*/

run:-	write("Укажите начальную точку (т1-т14):   "),readln(Х),   %правило5
	write("Укажите конечную точку (т1-т14):   "),readln(Y),
	findall(Расстояние,возможен(Х,Y,[Х],Список_маршрутов,Расстояние,0) , List),
	min2(Расстояние, List),
	возможен(Х,Y,[Х],Список_маршрутов,Расстояние,0),
	write("\nОптимальный маршрут: ",Список_маршрутов,"\nМинимальное расстояние проезда = ",Расстояние," условных единиц\nнажмите Esc для выхода\n") ,!,run.
goal
write("Программа ищет оптимальный маршрут проезда на метро из одной точки в другую,"),nl,
write("с учетом минимальности расстояния проезда."),nl,
write("Пользователь задает начальную и конечную точки маршрута.\n\n"),
write("Запустить тестовый пример (да - 1, нет - 2)\n"),readint(Sel),Sel=1,
write("Начальная точка - т7\nКонечная точка - т11"),
findall(Расстояние,возможен(т7,т11,[т7],Список_маршрутов,Расстояние,0) , List),
min2(Расстояние, List),
возможен(т7,т11,[т7],Список_маршрутов,Расстояние,0),
write("\nОптимальный маршрут: ",Список_маршрутов,"\nМинимальное расстояние проезда = ",Расстояние," условных единиц\n\nЗапуск программы\n"),run;Sel=2,run.
непонятны несколько строк обозначим их как:***
Помогите пожалуйста)!

Последний раз редактировалось Stilet; 19.02.2013 в 23:01.
pushok1606 вне форума Ответить с цитированием
Старый 19.02.2013, 22:02   #2
fbus
Форумчанин
 
Аватар для fbus
 
Регистрация: 23.10.2008
Сообщений: 460
По умолчанию

Оффтоп:

"курсач" без мягкого знака пишется, т.к. мужской род. Учебник по Русскому языку 3 класс.

Prology - неплохие колонки.
fbus вне форума Ответить с цитированием
Старый 19.02.2013, 22:16   #3
pushok1606
Новичок
Джуниор
 
Регистрация: 19.02.2013
Сообщений: 5
По умолчанию

Это понятно конечно.. Извините за орфографию.. Нервничаю очень((
pushok1606 вне форума Ответить с цитированием
Старый 19.02.2013, 22:28   #4
pushok1606
Новичок
Джуниор
 
Регистрация: 19.02.2013
Сообщений: 5
По умолчанию

А по сути помочь можете?
pushok1606 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти для каждого из маршрутов пункты с минимальным расстоянием от предыдущего |c++| Aztek93 Помощь студентам 8 27.12.2011 19:04
Пара точек с наибольшим расстоянием C++ LaDark Общие вопросы C/C++ 4 15.11.2010 20:22
Стоимость проезда в маршрутке в центах Alar Свободное общение 32 21.02.2009 13:06
"Поиск оптимального пути движения снегоочистительных машин с учетом приоритета дорог" Пролог Kvax Помощь студентам 4 21.12.2008 22:18