Курсовая работа: Математические модели
write("\nПуть: ",List,"\nЧисло остановок: ",
Остановки),nl.
stations(Начало,Конец,Пром,Ost,List):-маршрут(Начало,Конец,List,Ost,_,[Начало]),
includ(Пром,List).
%проверка, чтобы элемента из списка1 входили в список2
includ([X],List):-принадлежит(X,List).
includ([X|List1],List):-принадлежит(X,List),includ(List1,List).
vvod(1,List,List1):-write("Введите последнюю промежуточную станцию: "),
readln(Str),not(принадлежит(Str,List1)),List=[Str],!.
vvod(N,List,List1):-N>1,write("Введите промежуточную станцию: "),
readln(Nomer),
not(принадлежит(Nomer,List1)),N1=N-1,
vvod(N1,List2,[Nomer|List1]),List=[Nomer|List2],!;
write("Станция с таким названием уже была введена"),nl,vvod(N,List,List1).
digit(Str,Digit):- str_int(Str,Digit).
vvod2(N):-write("Сколько вы хотите ввести промежуточных станций: "),nl,
readln(Str),digit(Str,N),!;
write("Была введена не цифра. Повторите ввод"),nl,vvod2(N).
vvod1(N,List):-vvod2(N),vvod(N,List,[]).
GOAL
поиск.