Ошибка Free variable in expression 707 - Prolog
Формулировка задачи:
Листинг программы
- domains
- S=real
- D=real*
- file=lab5
- predicates
- tabl
- vvod(S,S,S,D)
- cikle(S,S,S,S)
- cikleterm(S,S,S,D)
- M(S,S)
- vivod
- goal
- tabl.
- clauses
- tabl:-
- vvod(X0,Hx,Xn,D),
- X=X0,
- openwrite(lab5,"Vivod.txt"),
- writedevice(lab5),
- nl,writef("Tablica znacheniy"),
- nl,writef(" X Y obl"),
- nl,cikleterm(X,Hx,Xn,D),
- closefile(lab5),
- openread(lab5,"Vivod.txt"),
- vivod,
- closefile(lab5).
- vvod(X0,Hx,Xn,[Y|Yn]):-
- nl,writef("Vvedite: :"),nl,
- write("X0= "),readreal(X0),
- write("Hx= "),readreal(Hx),
- write("Xn= "),readreal(Xn),
- write("Y[-2...2] "),readterm(D,[Y|Yn]).
- cikleterm(X,Hx,Xn,[Y|Yn]):-
- cikle(X,Hx,Xn,Y),
- cikleterm(X,Hx,Xn,Yn),
- cikle(_,_,_,_).
- cikle(X,Hx,Xn,Y):-
- X<=Xn,!,
- M(X,Y),
- X1=X+Hx,
- cikle(X1,Hx,Xn,Y),
- cikle(_,_,_,_).
- cikle(_,_,_,_):-
- writef("_______________________").
- M(X,Y):-
- X<=0,!,
- Y>=-1,!,
- Y<=X,!,
- writef("%-7.2 %-7.2",X,Y),
- writef("v obl 1"),!,nl.
- M(X,Y):-
- Y<=X,
- X<=1,
- Y>=0,
- writef("%-7.2 %-7.2",X,Y),
- writef("v obl 2"),!,nl.
- M(X,Y):-
- writef("%-7.2 %-7.2", X, Y),
- write("ne popal"),nl.
- vivod:-
- readdevice(lab5),
- not(eof(lab5)),
- readln(Y),
- writedevice(screen),
- write(Y),nl.
- vivod.
Решение задачи: «Ошибка Free variable in expression 707»
textual
Листинг программы
- cikle(X,Hx,Xn,Y):-
- X<=Xn,!,
Объяснение кода листинга программы
- Переменная
X
- текущее значение,Xn
- конечное значение,Y
- шаг цикла. - Условие
X<=Xn
проверяет, что текущее значениеX
меньше или равно конечному значениюXn
. - Вторая часть условия
!
- это оператор деления по модулю (остаток от деления). - В данном случае, это условие не имеет смысла, так как результат деления
X
наXn
не используется в дальнейшем коде. - Таким образом, можно предположить, что это ошибка в коде, которая приводит к сообщению об ошибке
Free variable in expression 707
. - Возможно, в коде должно быть что-то вроде
X is Xn
, чтобы присвоить конечное значение переменнойX
. - Но без дополнительной информации об этом коде сложно дать более точный ответ.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д