Нужно подредактировать программу для возможности работы со строками - Prolog

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

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

Добрый день! Есть рабочий текст программы и бд которую он считывает. Мне нужно, что бы в этой бд вместо целых числе можно было писать текст. Пробовал менять тип домена (из integer на symbol и на char), но тогда программа не работает. Помогите пожалуйста, а то я в этом деле дуб.
Листинг программы
  1. CODE=12050
  2. /* **************************
  3. * КУРСОВАЯ РАБОТА *
  4. * *
  5. * *
  6. **************************
  7. */
  8.  
  9. domains
  10. i,c,d,f=integer
  11. a,b,m,t=symbol
  12. database -svod1
  13. svod1(a,b,c,d,f,m,t)
  14. database -lolo
  15. lolo(a,b,c,d,f,m,t)
  16. database -kuku
  17. kuku(a,b,c,d,f,m,t)
  18. database
  19. svod(a,b,c,d,f,m,t)
  20. predicates
  21. start
  22. patch
  23. load
  24. select(i)
  25. sel(i,i)
  26. process(i)
  27. procedure(i)
  28. sve(i)
  29. lod(i)
  30. repeat
  31.  
  32. goal
  33. start.
  34. clauses
  35. /*Процедура создания основного меню и загрузки базы данных*/
  36. start:-
  37. makewindow(1,26,94,"КАТАЛОГ ФАКУЛЬТАТИВОВ",0,0,25,80),
  38. clearwindow,
  39. load,
  40. patch.
  41. /*Процедура управления основным меню*/
  42. patch:-
  43. repeat,
  44. cursor(7,0),
  45. write(" 0 - О пpогpамме... "),nl,
  46. write(" 1 - коррекция данных"),nl,
  47. write(" 2 - удаление данных"),nl,
  48. write(" 3 - просмотр базы"),nl,
  49. write(" 4 - загрузка базы"),nl,
  50. write(" 5 - сохранение базы"),nl,
  51. write(" 6 - создание новой базы"),nl,
  52. write(" 7 - ввод новых данных"),nl,
  53. write(" 8 - просмотр-добавление"),nl,
  54. write(" 9 - выход из программы"),nl,
  55. write(" =>"),
  56. readint(Choice),
  57. Choice >= 0,
  58. Choice < 10,
  59. clearwindow,
  60. process(Choice),
  61. clearwindow,
  62. Choice = 9,
  63. retractall(_),
  64. removewindow.
  65. /*Процедура поиска и загрузки файла содержащего базу данных*/
  66. load:-
  67. existfile("ilgiz.dat"),
  68. consult("ilgiz.dat"),
  69. cursor(1,2),
  70. write("База загружена").
  71. load:-
  72. makewindow(2,74,79,"ОШИБКА",6,18,8,40),
  73. cursor(2,10),
  74. write("Нет базы на диске"),
  75. readchar(_),
  76. removewindow,
  77. !.
  78. /*Пpоцедуpа ввода новых данных*/
  79. process(7):-
  80. makewindow(1,2,7,"Ввод новых данных",0,0,25,80),
  81. nl,
  82. write("Введите название факультатива :"),readln(K),nl,
  83. write("Введите Длительность факультатива :"),readln(O),nl,
  84. write("Введите имя преподавателя :"),readint(I),nl,
  85. write("Введите время начала :"),readint(Y),nl,
  86. write("Введите Для каких классов проводится :"),readint(T),nl,
  87. write("Введите кабинет :"),readln(FF),nl,
  88. write("Введите дни проведения :"),readln(HH),nl,
  89. N1=K,NA1=O,KO1=I,OB1=Y,PL1=T,FF1=FF,HH1=HH,
  90. assertz(svod(N1,NA1,KO1,OB1,PL1,FF1,HH1)),
  91. removewindow,
  92. fail.
  93. /*Процедура просмотра-добавления*/
  94. process(8):-
  95. makewindow(1,2,7,"Просмотр-добавление",0,0,25,80),
  96. nl,
  97. write("Введите Название факультатива:"),readln(A),nl,nl,
  98. svod(KY,NA,N,OB,PL,FFF,HHH),
  99. A=KY,
  100. write("Название факультатива :"),write(KY),nl,
  101. write("Длительность факультатива :"),write(NA),nl,
  102. write("Имя преподавателя :"),write(N),nl,
  103. write("Время начала :"),write(OB),nl,
  104. write("Для каких классов проводится :"),write(PL),nl,nl,nl,
  105. write("Кабинет :"),write(FFF),nl,
  106. write("Дни проведения :"),write(HHH),nl,
  107. write("Нажмите на любую клавишу"),
  108. readchar(_),
  109. removewindow,
  110. !.
  111. process(8):-
  112. write("Этого названия факультатива нет в базе."),
  113. write("Повторите введенное название факультатива и продолжайте ввод данных"),nl,nl,nl,
  114. write("Введите Название факультатива:"),
  115. readln(A),nl,
  116. A=N1,
  117. write("Введите Длительность факультатива :"),readln(F),nl,
  118. write("Введите Имя преподавателя :"),readint(Y),nl,
  119. write("Введите Время начала :"),readint(J),nl,
  120. write("Введите Для каких классов проводится :"),readint(G),nl,
  121. write("Введите Кабинет :"),readln(L),nl,
  122. write("Введите Дни проведения :"),readln(M),nl,
  123. NA1=F,KO1=Y,OB1=J,PL1=G,FF1=L,HH1=M,
  124. assertz(svod(N1,NA1,KO1,OB1,PL1,FF1,HH1)),
  125. removewindow,
  126. fail.
  127. /*Пpоцедуpа вывода данных о пpогpамме*/
  128. process(0):-
  129. makewindow(1,27,30,"О пpогpамме...",0,0,25,80),nl,nl,
  130. write(" Инфоpмационно-спpавочная система"),nl,nl,
  131. write(" обслуживающая работу с базои данных BSO"),nl,nl,
  132. write(" Язык-TURBO-PROLOG v.2.0. "),nl,nl,
  133. write(" автоp: Косячко Р. В. "),nl,nl,
  134. write(" УГХТУ, 5-ИС (с) 2015 г. "),nl,
  135. cursor(20,24),
  136. write("Нажмите на любую клавишу"),
  137. readchar(_),
  138. removewindow.
  139. /*Процедура изменения содержимого записей базы данных*/
  140. process(1):-
  141. makewindow(1,2,7,"Коppекция данных",0,0,25,80),
  142. nl,
  143. select(N),
  144. X=N,
  145. svod(KY,NA,X,OB,PL,FFF,HHH),
  146. write("Название факультатива :"),write(N),nl,
  147. write("Длительность факультатива :"),write(NA),nl,
  148. write("Имя преподавателя :"),write(X),nl,
  149. write("Время начала :"),write(OB),nl,
  150. write("Для каких классов проводится :"),write(PL),nl,
  151. write("Кабинет :"),write(FFF),nl,
  152. write("Дни проведения :"),write(HHH),nl,
  153. nl,
  154. write("Введите Название факультатива:"),readln(N1),
  155. write("Введите Длительность факультатива:"),readln(NA1),nl,
  156. write("Введите Имя преподавателя:"),readint(KO1),nl,
  157. write("Введите Время начала:"),readint(OB1),nl,
  158. write("Введите Для каких классов проводится:"),readint(PL1),nl,
  159. write("Введите Кабинет:"),readln(FF1),nl,
  160. write("Введите Дни проведения:"),readln(HH1),nl,
  161. retract(svod(KY,NA,KO,OB,PL,FFF,HHH)),
  162. assert(svod(N1,NA1,KO1,OB1,PL1,FF1,HH1)),
  163. !,
  164. removewindow.
  165.  
  166. /*Процедура удаления записей из базы данных*/
  167. process(2):-
  168. makewindow(1,2,7,"Удаление записей",0,0,25,80),
  169. nl,
  170. select(N),
  171. X=N,
  172. svod(KY,NA,X,OB,PL,FFF,HHH),
  173. retract(svod(KY,NA,X,OB,PL,FFF,HHH)),!,
  174. removewindow.
  175. /*Процедура просмотра содержимого базы данных*/
  176. process(3):-
  177. makewindow(1,2,7,"Просмотp базы",0,0,25,80),
  178. nl,
  179. write("============================================================================="),nl,
  180. write("| КАТАЛОГ ФАКУЛЬТАТИВОВ |"),nl,
  181. write("============================================================================="),nl,
  182. write("|Название |Длительность|Имя |Время |Для каких |Кабинет|Дни |"),nl,
  183. write("| | |преподавателя|начала|классов | |проведения| "),nl,
  184. write("============================================================================="),nl,
  185. svod(KY,NA,N,OB,PL,FFF,HHH),
  186. cursor(Z,_),
  187. cursor(Z,2),write(KY),
  188. cursor(Z,12),write(NA),
  189. cursor(Z,27),write(N),
  190. cursor(Z,35),write(OB),
  191. cursor(Z,46),write(PL),
  192. cursor(Z,0),write("|"),
  193. cursor(Z,56),write(FFF),
  194. cursor(Z,67),write(HHH),
  195. nl,
  196. fail.
  197. process(3):-
  198. write("------------------------------------------------------------------------------"),
  199. nl,
  200. write("Нажмите на любую клавишу"),
  201. readchar(_),
  202. removewindow.
  203. /*Процедура загрузки в память базы данных*/
  204. process(4):-
  205. nl,
  206. makewindow(2,15,4,"Загрузка",5,5,20,70),
  207. write("1 - База будет загружена из указанного файла"),nl,
  208. write("2 - База будет загружена из файла ilgiz.dat"),nl,
  209. write("3 - Выход в основное меню"),nl,
  210. write("==>"),
  211. readint(C),
  212. C>0,C<4,
  213. lod(C),
  214. !,
  215. removewindow.
  216. /*Процедура сохранения базы данных*/
  217. process(5):-
  218. nl,
  219. makewindow(2,15,4,"Запись",5,5,20,70),
  220. write("1 - База будет записана в указанный файл"),nl,
  221. write("2 - База будет записана в файл ilgiz.dat"),nl,
  222. write("3 - Выход в основное меню"),nl,
  223. write("==>"),
  224. readint(I),
  225. I>0,I<4,
  226. sve(I),!,
  227. removewindow.
  228. /*Процедура выбора создания новой базы*/
  229. process(6):-
  230. nl,
  231. makewindow(3,2,7,"Создание новой базы",0,0,25,80),
  232. write("1 - База будет создана по Название факультативау "),nl,
  233. write("2 - База будет создана по году вступления в эксплуатацию"),nl,
  234. write("3 - База будет создана по смете стоимости "),nl,
  235. write("4 - Выход в основное меню"),nl,
  236. write("==>"),
  237. readint(O),
  238. O>0,O<5,
  239. procedure(O),
  240. removewindow.
  241. process(_).
  242. /*Процедура создания новой базы данных и ее сохранения*/
  243. procedure(1):-
  244. makewindow(1,2,7,"Создание новой базы по Название факультативау",0,0,25,80),
  245. nl,
  246. cursor(7,10),
  247. retractall(_,svod1),
  248. nl,
  249. write("Если вы хотите узнать данные , то"),
  250. nl,
  251. write("Введите Название факультатива:"),
  252. readln(X),
  253. svod(KY,NA,N,OB,PL,FFF,HHH),
  254. S=KY,
  255. S=X,
  256. NA1=Na,KO1=N,OB1=OB,PL1=PL,FF1=FFF,HH1=HHH,
  257. assert(svod1(S,NA1,KO1,OB1,PL1,FF1,HH1)),
  258. fail.
  259. procedure(1):-
  260. write("База создана"),nl,
  261. write("______________________________________________________________________________"),
  262. write(" КАТАЛОГ ФАКУЛЬТАТИВОВ !"),
  263. write("------------------------------------------------------------------------------"),
  264. write("! ! ! код !год ! смета ! адрес !"),
  265. write("! Название факультатива ! Длительность факультатива ! СМУ !вступления в!стоимости! ----------------------"),
  266. write("! ! ! !эксплуатацию! ! раион ! Дни проведения !"),
  267. write("------------------------------------------------------------------------------"),
  268. nl,
  269. svod1(S,NA,N,OB,PL,FFF,HHH),
  270. cursor(Z,_),
  271. cursor(Z,2),write(S),
  272. cursor(Z,12),write(NA),
  273. cursor(Z,27),write(N),
  274. cursor(Z,35),write(OB),
  275. cursor(Z,46),write(PL),
  276. cursor(Z,56),write(FFF),
  277. cursor(Z,67),write(HHH),
  278. nl,
  279. fail.

Решение задачи: «Нужно подредактировать программу для возможности работы со строками»

textual
Листинг программы
  1. database -svod1
  2.     svod1(a,b,c,d,f,m,t)
  3. database -lolo
  4.     lolo(a,b,c,d,f,m,t)
  5. database -kuku
  6.     kuku(a,b,c,d,f,m,t)
  7. database
  8.     svod(a,b,c,d,f,m,t)

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


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

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

11   голосов , оценка 4.091 из 5

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

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

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