Вообщем такая вот задачка. проблема с “X”, пролог пишет что “Free variable in expression”. Говорил сегодня с преподом, показал как примерно сделать, и вот что вышло. Задача думаю простая, но не для меня. Мне надо вводить числа, и выводить с таким условием:выводим первое, а каждое след > пред. Здесь “N”и “count” не обращаите внимание(Это потом для счетчика и т.д.) . у меня же тут проблема, что я не понимаю как первое число сделать для того чтобы от него уже сравнивать с дольнейшими числама, для вывода, и еще потом присваивать новое значение. тут как бы с рекурсией двоной, т.е. в первом случае Х наибольший, по нему сравнивается, если вдруг число появилось больше чем Х , то уже по второй рекурсиий сравнивается,потом наоборот(фуухх, главное чтобы не запутать Вас)Вообщем описал примерно что я тут «накодил» ... Буду признателен любой помощи.
domains
N,X,Count = integer
predicates
vvod(N,X,Count)
vvod2(N,X,Count)
check(integer)
goal
vvod(N,X,Count),!,
vvod2(N,Y,Count).
clauses
vvod(N,X,Count):-
write(“Vvedite 4islo”),
readint(Y),
Y>X,X=Y,
write(“max Y=”,Y),nl,
check(Y),
vvod(N,X,Count).
vvod2(N,Y,Count):-
readint(X),
X>Y,Y=X,
write(“max X=”,X),
vvod(N,Y,Count).
check(0):-nl,write(“konec raboti”).
check(_):-fail.