Нужно подредактировать программу для возможности работы со строками - Prolog
Формулировка задачи:
Добрый день! Есть рабочий текст программы и бд которую он считывает. Мне нужно, что бы в этой бд вместо целых числе можно было писать текст. Пробовал менять тип домена (из integer на symbol и на char), но тогда программа не работает. Помогите пожалуйста, а то я в этом деле дуб.
Листинг программы
- CODE=12050
- /* **************************
- * КУРСОВАЯ РАБОТА *
- * *
- * *
- **************************
- */
- domains
- i,c,d,f=integer
- a,b,m,t=symbol
- database -svod1
- svod1(a,b,c,d,f,m,t)
- database -lolo
- lolo(a,b,c,d,f,m,t)
- database -kuku
- kuku(a,b,c,d,f,m,t)
- database
- svod(a,b,c,d,f,m,t)
- predicates
- start
- patch
- load
- select(i)
- sel(i,i)
- process(i)
- procedure(i)
- sve(i)
- lod(i)
- repeat
- goal
- start.
- clauses
- /*Процедура создания основного меню и загрузки базы данных*/
- start:-
- makewindow(1,26,94,"КАТАЛОГ ФАКУЛЬТАТИВОВ",0,0,25,80),
- clearwindow,
- load,
- patch.
- /*Процедура управления основным меню*/
- patch:-
- repeat,
- cursor(7,0),
- write(" 0 - О пpогpамме... "),nl,
- write(" 1 - коррекция данных"),nl,
- write(" 2 - удаление данных"),nl,
- write(" 3 - просмотр базы"),nl,
- write(" 4 - загрузка базы"),nl,
- write(" 5 - сохранение базы"),nl,
- write(" 6 - создание новой базы"),nl,
- write(" 7 - ввод новых данных"),nl,
- write(" 8 - просмотр-добавление"),nl,
- write(" 9 - выход из программы"),nl,
- write(" =>"),
- readint(Choice),
- Choice >= 0,
- Choice < 10,
- clearwindow,
- process(Choice),
- clearwindow,
- Choice = 9,
- retractall(_),
- removewindow.
- /*Процедура поиска и загрузки файла содержащего базу данных*/
- load:-
- existfile("ilgiz.dat"),
- consult("ilgiz.dat"),
- cursor(1,2),
- write("База загружена").
- load:-
- makewindow(2,74,79,"ОШИБКА",6,18,8,40),
- cursor(2,10),
- write("Нет базы на диске"),
- readchar(_),
- removewindow,
- !.
- /*Пpоцедуpа ввода новых данных*/
- process(7):-
- makewindow(1,2,7,"Ввод новых данных",0,0,25,80),
- nl,
- write("Введите название факультатива :"),readln(K),nl,
- write("Введите Длительность факультатива :"),readln(O),nl,
- write("Введите имя преподавателя :"),readint(I),nl,
- write("Введите время начала :"),readint(Y),nl,
- write("Введите Для каких классов проводится :"),readint(T),nl,
- write("Введите кабинет :"),readln(FF),nl,
- write("Введите дни проведения :"),readln(HH),nl,
- N1=K,NA1=O,KO1=I,OB1=Y,PL1=T,FF1=FF,HH1=HH,
- assertz(svod(N1,NA1,KO1,OB1,PL1,FF1,HH1)),
- removewindow,
- fail.
- /*Процедура просмотра-добавления*/
- process(8):-
- makewindow(1,2,7,"Просмотр-добавление",0,0,25,80),
- nl,
- write("Введите Название факультатива:"),readln(A),nl,nl,
- svod(KY,NA,N,OB,PL,FFF,HHH),
- A=KY,
- write("Название факультатива :"),write(KY),nl,
- write("Длительность факультатива :"),write(NA),nl,
- write("Имя преподавателя :"),write(N),nl,
- write("Время начала :"),write(OB),nl,
- write("Для каких классов проводится :"),write(PL),nl,nl,nl,
- write("Кабинет :"),write(FFF),nl,
- write("Дни проведения :"),write(HHH),nl,
- write("Нажмите на любую клавишу"),
- readchar(_),
- removewindow,
- !.
- process(8):-
- write("Этого названия факультатива нет в базе."),
- write("Повторите введенное название факультатива и продолжайте ввод данных"),nl,nl,nl,
- write("Введите Название факультатива:"),
- readln(A),nl,
- A=N1,
- write("Введите Длительность факультатива :"),readln(F),nl,
- write("Введите Имя преподавателя :"),readint(Y),nl,
- write("Введите Время начала :"),readint(J),nl,
- write("Введите Для каких классов проводится :"),readint(G),nl,
- write("Введите Кабинет :"),readln(L),nl,
- write("Введите Дни проведения :"),readln(M),nl,
- NA1=F,KO1=Y,OB1=J,PL1=G,FF1=L,HH1=M,
- assertz(svod(N1,NA1,KO1,OB1,PL1,FF1,HH1)),
- removewindow,
- fail.
- /*Пpоцедуpа вывода данных о пpогpамме*/
- process(0):-
- makewindow(1,27,30,"О пpогpамме...",0,0,25,80),nl,nl,
- write(" Инфоpмационно-спpавочная система"),nl,nl,
- write(" обслуживающая работу с базои данных BSO"),nl,nl,
- write(" Язык-TURBO-PROLOG v.2.0. "),nl,nl,
- write(" автоp: Косячко Р. В. "),nl,nl,
- write(" УГХТУ, 5-ИС (с) 2015 г. "),nl,
- cursor(20,24),
- write("Нажмите на любую клавишу"),
- readchar(_),
- removewindow.
- /*Процедура изменения содержимого записей базы данных*/
- process(1):-
- makewindow(1,2,7,"Коppекция данных",0,0,25,80),
- nl,
- select(N),
- X=N,
- svod(KY,NA,X,OB,PL,FFF,HHH),
- write("Название факультатива :"),write(N),nl,
- write("Длительность факультатива :"),write(NA),nl,
- write("Имя преподавателя :"),write(X),nl,
- write("Время начала :"),write(OB),nl,
- write("Для каких классов проводится :"),write(PL),nl,
- write("Кабинет :"),write(FFF),nl,
- write("Дни проведения :"),write(HHH),nl,
- nl,
- write("Введите Название факультатива:"),readln(N1),
- write("Введите Длительность факультатива:"),readln(NA1),nl,
- write("Введите Имя преподавателя:"),readint(KO1),nl,
- write("Введите Время начала:"),readint(OB1),nl,
- write("Введите Для каких классов проводится:"),readint(PL1),nl,
- write("Введите Кабинет:"),readln(FF1),nl,
- write("Введите Дни проведения:"),readln(HH1),nl,
- retract(svod(KY,NA,KO,OB,PL,FFF,HHH)),
- assert(svod(N1,NA1,KO1,OB1,PL1,FF1,HH1)),
- !,
- removewindow.
- /*Процедура удаления записей из базы данных*/
- process(2):-
- makewindow(1,2,7,"Удаление записей",0,0,25,80),
- nl,
- select(N),
- X=N,
- svod(KY,NA,X,OB,PL,FFF,HHH),
- retract(svod(KY,NA,X,OB,PL,FFF,HHH)),!,
- removewindow.
- /*Процедура просмотра содержимого базы данных*/
- process(3):-
- makewindow(1,2,7,"Просмотp базы",0,0,25,80),
- nl,
- write("============================================================================="),nl,
- write("| КАТАЛОГ ФАКУЛЬТАТИВОВ |"),nl,
- write("============================================================================="),nl,
- write("|Название |Длительность|Имя |Время |Для каких |Кабинет|Дни |"),nl,
- write("| | |преподавателя|начала|классов | |проведения| "),nl,
- write("============================================================================="),nl,
- svod(KY,NA,N,OB,PL,FFF,HHH),
- cursor(Z,_),
- cursor(Z,2),write(KY),
- cursor(Z,12),write(NA),
- cursor(Z,27),write(N),
- cursor(Z,35),write(OB),
- cursor(Z,46),write(PL),
- cursor(Z,0),write("|"),
- cursor(Z,56),write(FFF),
- cursor(Z,67),write(HHH),
- nl,
- fail.
- process(3):-
- write("------------------------------------------------------------------------------"),
- nl,
- write("Нажмите на любую клавишу"),
- readchar(_),
- removewindow.
- /*Процедура загрузки в память базы данных*/
- process(4):-
- nl,
- makewindow(2,15,4,"Загрузка",5,5,20,70),
- write("1 - База будет загружена из указанного файла"),nl,
- write("2 - База будет загружена из файла ilgiz.dat"),nl,
- write("3 - Выход в основное меню"),nl,
- write("==>"),
- readint(C),
- C>0,C<4,
- lod(C),
- !,
- removewindow.
- /*Процедура сохранения базы данных*/
- process(5):-
- nl,
- makewindow(2,15,4,"Запись",5,5,20,70),
- write("1 - База будет записана в указанный файл"),nl,
- write("2 - База будет записана в файл ilgiz.dat"),nl,
- write("3 - Выход в основное меню"),nl,
- write("==>"),
- readint(I),
- I>0,I<4,
- sve(I),!,
- removewindow.
- /*Процедура выбора создания новой базы*/
- process(6):-
- nl,
- makewindow(3,2,7,"Создание новой базы",0,0,25,80),
- write("1 - База будет создана по Название факультативау "),nl,
- write("2 - База будет создана по году вступления в эксплуатацию"),nl,
- write("3 - База будет создана по смете стоимости "),nl,
- write("4 - Выход в основное меню"),nl,
- write("==>"),
- readint(O),
- O>0,O<5,
- procedure(O),
- removewindow.
- process(_).
- /*Процедура создания новой базы данных и ее сохранения*/
- procedure(1):-
- makewindow(1,2,7,"Создание новой базы по Название факультативау",0,0,25,80),
- nl,
- cursor(7,10),
- retractall(_,svod1),
- nl,
- write("Если вы хотите узнать данные , то"),
- nl,
- write("Введите Название факультатива:"),
- readln(X),
- svod(KY,NA,N,OB,PL,FFF,HHH),
- S=KY,
- S=X,
- NA1=Na,KO1=N,OB1=OB,PL1=PL,FF1=FFF,HH1=HHH,
- assert(svod1(S,NA1,KO1,OB1,PL1,FF1,HH1)),
- fail.
- procedure(1):-
- write("База создана"),nl,
- write("______________________________________________________________________________"),
- write(" КАТАЛОГ ФАКУЛЬТАТИВОВ !"),
- write("------------------------------------------------------------------------------"),
- write("! ! ! код !год ! смета ! адрес !"),
- write("! Название факультатива ! Длительность факультатива ! СМУ !вступления в!стоимости! ----------------------"),
- write("! ! ! !эксплуатацию! ! раион ! Дни проведения !"),
- write("------------------------------------------------------------------------------"),
- nl,
- svod1(S,NA,N,OB,PL,FFF,HHH),
- cursor(Z,_),
- cursor(Z,2),write(S),
- cursor(Z,12),write(NA),
- cursor(Z,27),write(N),
- cursor(Z,35),write(OB),
- cursor(Z,46),write(PL),
- cursor(Z,56),write(FFF),
- cursor(Z,67),write(HHH),
- nl,
- fail.
Решение задачи: «Нужно подредактировать программу для возможности работы со строками»
textual
Листинг программы
- database -svod1
- svod1(a,b,c,d,f,m,t)
- database -lolo
- lolo(a,b,c,d,f,m,t)
- database -kuku
- kuku(a,b,c,d,f,m,t)
- database
- svod(a,b,c,d,f,m,t)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д