Нужно подредактировать программу для возможности работы со строками - 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)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д