Ошибка Free variable in expression 707 - Prolog

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. domains
  2. S=real
  3. D=real*
  4. file=lab5
  5. predicates
  6. tabl
  7. vvod(S,S,S,D)
  8. cikle(S,S,S,S)
  9. cikleterm(S,S,S,D)
  10. M(S,S)
  11. vivod
  12. goal
  13. tabl.
  14. clauses
  15. tabl:-
  16. vvod(X0,Hx,Xn,D),
  17. X=X0,
  18. openwrite(lab5,"Vivod.txt"),
  19. writedevice(lab5),
  20. nl,writef("Tablica znacheniy"),
  21. nl,writef(" X Y obl"),
  22. nl,cikleterm(X,Hx,Xn,D),
  23. closefile(lab5),
  24. openread(lab5,"Vivod.txt"),
  25. vivod,
  26. closefile(lab5).
  27. vvod(X0,Hx,Xn,[Y|Yn]):-
  28. nl,writef("Vvedite: :"),nl,
  29. write("X0= "),readreal(X0),
  30. write("Hx= "),readreal(Hx),
  31. write("Xn= "),readreal(Xn),
  32. write("Y[-2...2] "),readterm(D,[Y|Yn]).
  33. cikleterm(X,Hx,Xn,[Y|Yn]):-
  34. cikle(X,Hx,Xn,Y),
  35. cikleterm(X,Hx,Xn,Yn),
  36. cikle(_,_,_,_).
  37. cikle(X,Hx,Xn,Y):-
  38. X<=Xn,!,
  39. M(X,Y),
  40. X1=X+Hx,
  41. cikle(X1,Hx,Xn,Y),
  42. cikle(_,_,_,_).
  43. cikle(_,_,_,_):-
  44. writef("_______________________").
  45. M(X,Y):-
  46. X<=0,!,
  47. Y>=-1,!,
  48. Y<=X,!,
  49. writef("%-7.2 %-7.2",X,Y),
  50. writef("v obl 1"),!,nl.
  51. M(X,Y):-
  52. Y<=X,
  53. X<=1,
  54. Y>=0,
  55. writef("%-7.2 %-7.2",X,Y),
  56. writef("v obl 2"),!,nl.
  57. M(X,Y):-
  58. writef("%-7.2 %-7.2", X, Y),
  59. write("ne popal"),nl.
  60. vivod:-
  61. readdevice(lab5),
  62. not(eof(lab5)),
  63. readln(Y),
  64. writedevice(screen),
  65. write(Y),nl.
  66. vivod.
Выдает ошибку 707 Free variable in Expression в правиле cikle(X, Hx, Xn,Y):-, в строке X<=Xn. В чем ошибка, помогите пожалуйста

Решение задачи: «Ошибка Free variable in expression 707»

textual
Листинг программы
  1.     cikle(X,Hx,Xn,Y):-
  2.         X<=Xn,!,

Объяснение кода листинга программы

  1. Переменная X - текущее значение, Xn - конечное значение, Y - шаг цикла.
  2. Условие X<=Xn проверяет, что текущее значение X меньше или равно конечному значению Xn.
  3. Вторая часть условия ! - это оператор деления по модулю (остаток от деления).
  4. В данном случае, это условие не имеет смысла, так как результат деления X на Xn не используется в дальнейшем коде.
  5. Таким образом, можно предположить, что это ошибка в коде, которая приводит к сообщению об ошибке Free variable in expression 707.
  6. Возможно, в коде должно быть что-то вроде X is Xn, чтобы присвоить конечное значение переменной X.
  7. Но без дополнительной информации об этом коде сложно дать более точный ответ.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы