SWI-PROLOG, прога выдает ошибки

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

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

Есть прога, нужно исправить ошибки/откомпилировать.
Листинг программы
  1. :-dynamic record/6.
  2. :- discontiguous process/1.
  3. record(1,'Хлеб','15 января 2017',20,22,'Хлебзавод №1').
  4. record(2,'Батон','14 января 2017',20,25,'Хлебзавод №2').
  5. record(3,'Чай Greenfield','01 января 2018',60,85,'Greenfield ltd').
  6. record(4,'Чай Lipton','01 июня 2018',40,60,'Lipton International').
  7. record(5,'Молоко','01 февраля 2017',60,65,'ЗАО Хладокомбинат').
  8. record(6,'Кефир','27 января 2017',30,50,'ЗАО Хладокомбинат').
  9. record(7,'Масло','04 февраля 2017',10,80,'ООО Экомилк').
  10. record(8,'Шоколад Milka','01 сентября 2017',75,65,'Kraft Foods Ltd').
  11. record(9,'Кофе Jakobs','1 июня 2018',40,60,'Kraft Foods Ltd').
  12. start:-
  13. write('--------------------------------------------'),nl,
  14. write('--------БД Магазина продуктов питания----------'),nl,
  15. write('--------------------------------------------'),nl,nl,menu.
  16. menu:-
  17. write('Введите номер 1..7'),nl,
  18. write('1. Добавить запись в БД'),nl,
  19. write('2. Удалить запись из БД'),nl,
  20. write('3. Поиск по ID'),nl,
  21. write('4. Просмотр всех записей'),nl,
  22. write('5. Поиск по производителю'),nl,
  23. write('6. Поиск по цене'),nl,
  24. write('7. Завершение работы'),nl,
  25. read(C),nl,
  26. process(C),!.
  27. process(1):-
  28. write('-----Добавление записи-----'),nl,nl,
  29. write('ID записи: '),
  30. read(ID),
  31. write('Наименование товара: '),
  32. read(NAME),
  33. write('Срок годности: '),
  34. read(SROK),
  35. write('Количество товара на складе: '),
  36. read(KOL),
  37. write('Цена за 1 шт.: '),
  38. read(PRICE),
  39. write('Производитель: '),
  40. read(PROIZV),
  41. assertz(record(ID,NAME,SROK,KOL,PRICE,PROIZV)),nl,nl,
  42. write('Запись добавленна!'),nl,nl,menu.
  43. process(2):-
  44. write('------Удаление записи------'),nl,nl,
  45. write('Введите ID записи: '),
  46. read(ID),
  47. A = record(ID,_,_,_,_,_,_,_),
  48. retractall(A),
  49. write('Запись удалена!'),nl,nl,nl,menu.
  50. process(3):-
  51. write('------Поиск по ID------'),nl,nl,
  52. write('Введите ID записи: '),nl,
  53. read(ID),nl,
  54. write('------------------'),
  55. record(ID,NAME,SROK,KOL,PRICE,PROIZV),
  56. nl,write(' ID: '),write(ID),
  57. nl,write(' Наименование товара: '),write(NAME),
  58. nl,write(' Срок годности: '),write(SROK),
  59. nl,write(' Количество товара на складе: '),write(KOL),
  60. nl,write(' Цена за 1 шт.: '),write(PRICE),
  61. nl,write(' Производитель: '),write(PROIZV),
  62. nl,write('------------------'),
  63. nl,nl,!,menu.
  64. process(4):-write('------Просмотр всех данных------'),nl,nl,
  65. record(ID,NAME,SROK,KOL,PRICE,PROIZV),
  66. nl,write(' ID: '),write(ID),
  67. nl,write(' Наименование товара: '),write(NAME),
  68. nl,write(' Срок годности: '),write(SROK),
  69. nl,write(' Количество товара на складе: '),write(KOL),
  70. nl,write(' Цена за 1 шт.: '),write(PRICE),
  71. nl,write(' Производитель: '),write(PROIZV),
  72. nl,write('------------------'),
  73. nl,nl,fail;
  74. menu.
  75. process(5):-
  76. write('------Поиск по Производителю------'),nl,nl,
  77. write('Поиск по производителю: '),nl,
  78. read(PROIZV),nl,
  79. write('------------------'),
  80. record(ID,NAME,SROK,KOL,PRICE,PROIZV),
  81. nl,write(' ID: '),write(ID),
  82. nl,write(' Наименование товара: '),write(NAME),
  83. nl,write(' срок годности: '),write(SROK),
  84. nl,write(' Количество товара на складе: '),write(KOL),
  85. nl,write(' Цена за 1 шт.: '),write(PRICE),
  86. nl,write(' Производитель: '),write(PROIZV),
  87. nl,write('------------------'),
  88. nl,nl,!,menu.
  89. process(6):-
  90. write('------Просмотр всех данных------'),nl,nl,
  91. write('Минимальная цена'),nl,
  92. read(MIN),nl,
  93. write('Максимальная цена'),nl,
  94. read(MAX),nl,
  95. record(ID,NAME,SROK,KOL,PRICE,PROIZV),
  96. PRICE>MIN, PRICE<MAX,
  97. nl,write(' ID: '),write(ID),
  98. nl,write(' Наименование товара: '),write(NAME),
  99. nl,write(' Срок годности: '),write(SROK),
  100. nl,write(' Количество товара на складе: '),write(KOL),
  101. nl,write(' Цена за 1 шт.: '),write(PRICE),
  102. nl,write(' Производитель: '),write(PROIZV),
  103. nl,write('------------------'),
  104. nl,nl,fail,menu.
  105. process(7):-
  106. write('Вы уверенны, что хотите завершить работу? (y/n)'),
  107. read(A),esc(A).
  108. esc(A):-
  109. A == 'y',halt.
  110. esc(A):-
  111. A == 'n',nl,start.
  112. process(C):-
  113. C<1,error.
  114. process(C):-
  115. C>6,error.
  116. error:-write('ERROR! enter number 1..9'),nl,nl,menu.

Решение задачи: «SWI-PROLOG, прога выдает ошибки»

textual
Листинг программы
  1. record

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


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

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

7   голосов , оценка 4 из 5

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

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

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