Программа не работает, помогите исправить - Prolog

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

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

Листинг программы
  1. DOMAINS
  2. nazv = String
  3. izmer= Integer
  4. file=f
  5. DATABASE
  6. geogr(nazv,izmer)
  7. PREDICATES
  8. nondeterm m(char)
  9. nondeterm menu
  10. output_i_n(izmer)
  11. output_n_i(nazv)
  12. CLAUSES
  13. geogr("Russia",500).
  14. geogr("Tashkent",200).
  15. geogr("Lena",600).
  16. geogr("Irtish",750).
  17. geogr("Ob",100).
  18. geogr("Pol'sha",120).
  19. geogr("Kama",170).
  20. menu:-
  21. write("1 - ishem izmer po nazv "),nl,
  22. write("2 - ishem nazv po izmer "),nl,
  23. write("3 - dobavlenie infi "),nl,
  24. write("4 - izmenenie punkta "),nl,
  25. write("5 - udalenie zapisi "),nl,
  26. write("6 - vsy baza "),nl,
  27. write("7 - limit "),nl,
  28. write("0 - vihod "),nl,
  29. readchar(C),
  30. m(C).
  31. m('1'):-
  32. write("vvedi nazv "), nl,
  33. readln(Nazv),
  34. output_n_i(Nazv),
  35. menu.
  36.  
  37. m('2'):-
  38. write("vvedi izmer "),nl,
  39. readint (Izmer),
  40. output_i_n(Izmer),
  41. menu.
  42. m('3'):-!,
  43. write("vvedi nazv "),nl,
  44. readln(Nazv),
  45. write("vvedi izmer "),nl,
  46. readint (Izmer),
  47. assert(geogr(Nazv,Izmer)),
  48. menu.
  49. m('4'):-!,
  50. write("vvedi nazv "),nl,
  51. readln(Nazv),
  52. write("vvedi nov izmer "),nl,
  53. readint (Izmer),
  54. retract(geogr(Nazv,_)),
  55. assert(geogr(Nazv,Izmer)),
  56. menu.
  57. m('5'):-!,
  58. write("udalyem nazv "), nl,
  59. readln(Nazv),
  60. retractall(geogr(Nazv,_)),
  61. menu.
  62. m('6'):-
  63. geogr(Nazv, Izmer),
  64. write(" Nazv: ", Nazv, " Izmer: ",Izmer),nl,
  65. fail,menu.
  66. m('7'):-
  67. write("vvedi limit izmer "),nl,
  68. readln(Limit),
  69. geogr(Nazv, Izmer),
  70. Izmer <=Limit,
  71. write(" Nazv: ", Nazv, " Izmer: ",Izmer),nl,
  72. fail,menu.
  73. m('0'):-!,
  74. save("avia.ddb"),
  75. retractall(_).
  76. m(_):-!,menu.
  77. output_i_n(Limit):-
  78. geogr(Nazv, Izmer),
  79. Izmer <=Limit,
  80. write("nazv : ",Nazv," izmer=",Izmer),nl,
  81. fail.
  82. output_i_n(Limit):-
  83. geogr(Nazv, Izmer),
  84. Izmer > Limit,!.
  85. output_i_n( Izmer):-
  86. write("ne hvatit "),nl,fail.
  87. output_i_n(Limit):-
  88. geogr(Nazv,_),!.
  89. output_i_n(_):-
  90. write("net infi o takoi strane(reke)"),nl,
  91. fail.
  92. output_n_i(Nazv):-
  93. geogr(Nazv, Izmer),
  94. write("nazv: ",Nazv," Izmer ",Izmer),nl,
  95. fail.
  96. output_n_i(Nazv):-
  97. geogr(Nazv,_),!.
  98. output_n_i(_):-
  99. write("net infi o strane "),nl,
  100. fail.
  101. GOAL
  102. menu.
Проблема кроется вот в этих строках !
Листинг программы
  1. output_i_n(Limit):-
  2. geogr(Nazv, Izmer),
  3. Izmer > Limit,!.
  4. output_i_n( Izmer):-
  5. write("ne hvatit "),nl,fail.
  6. output_i_n(Limit):-
  7. geogr(Nazv,_),!.
  8. output_i_n(_):-
  9. write("net infi o takoi strane(reke)"),nl,
  10. fail.
  11. m('7'):-
  12. write("vvedi limit izmer "),nl,
  13. readln(Limit),
  14. geogr(Nazv, Izmer),
  15. Izmer <=Limit,
  16. write(" Nazv: ", Nazv, " Izmer: ",Izmer),nl,
  17. fail,menu.

Решение задачи: «Программа не работает, помогите исправить»

textual
Листинг программы
  1. readln(X) ; readln (Y) ; readln Z.

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

  1. Сначала программа запрашивает у пользователя ввод трех значений с помощью функции readln:
    • X (первое значение)
    • Y (второе значение)
    • Z (третье значение) Пример использования: ?- readln(X), readln(Y), readln(Z). X = '1', Y = '2', Z = '3'. Это означает, что программа сначала запрашивает у пользователя ввести значение X, затем значение Y и, наконец, значение Z. Значения сохраняются в соответствующих переменных X, Y и Z.

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


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

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

9   голосов , оценка 4.444 из 5

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

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

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