Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Другие языки > Prolog, база данных


Автор: svs888 19.5.2011, 10:51
Задача: 
 Составить базу данных об учащихся, предусмотрев поля: Ф.И.О.,
 предметы по выбору, экзаменационные оценки по каждому из них.
 Составить программу, позволяющую
 -вывести полный список учащихся,
 -список учащихся, выбравших данный предмет,
 -список учащихся, сдавших все экзамены на 4 и 5.

domains
name,predm,marks=string
file=f

database
stud(name,predm,marks)

predicates 
subj(string)
qua(string)
m(char)
srch(string,string)
vse_stud
menu
start

clauses
vse_stud:-stud(S,SS,_),srch(S,SS),write(S),nl,fail.
srch(S,SS):-stud(S,N,_),!,N=SS,!.
qua(S):-stud(S,_,N),str_int(N,M),M<>4,M<>5,!.
subj(SS) :-stud(S,SS,_),write(S," "),nl,fail.
subj(_):-!.

menu:-clearwindow,
write("1-sdali na 4 i 5"),nl,
write ("2-vivod po predmety"),nl,
write("3-dobavlenie novoi zapisi"),nl,
write("4-izmenenie dannyx"),nl,
write("5-ydalit stud is basy"),nl,
write("6-vivod vsex stud"),nl,
write("0-vihod"),nl,readchar©,m©.

m('1'):-clearwindow,
stud(S,SS,_),srch(S,SS),NOT(qua(S)),
write(S),nl,fail,menu.

m('2'):-clearwindow,
write("write predmet: "),readln(SS),!,
stud(S,SS,_),srch(S,SS),
subj(SS),menu,!.

m('3'):-clearwindow,
write("Vvedite famil stud"),nl,readln(name),
write("Vvedite ego predmet"),nl,readln(predm),
write("Vvedite ocenky"),nl,readln(marks),
assert(stud(name,predm,marks)),menu.

m('4'):-clearwindow,
write("Vvedite famil stud"),nl,readln(name),
write("Vvedite ego predm"),nl,readln(predm),
write("Vvedite novuy ocenky"),nl,readln(marks),
assert(stud(name,predm,marks)),menu.

m('5'):-clearwindow,
write("Ykazite styd, kotor nado delete"),nl,
readln(name),retract(stud(_,_,_)),menu.

m('6'):-clearwindow,vse_stud;readchar(_),menu.

m('0'):-save("Stud.ddb"),retractall(_).

m(_):-menu.

start:-existfile("Stud.ddb"),!,consult("Stud.ddb"),menu.

start:-openwrite(f,"Stud.ddb"),closefile(f),menu.

Goal
start

выдает ошибку здесь:
 m('3'):-clearwindow,
 write("Vvedite famil stud"),nl,readln(name),

 говорит: 703 This flow pattern doesn’t exist.

 В чем ошибка? подскажите, пожалуйста.

Ошибку нашла: переменные с заглавной буквы должны быть....исправила, но все равно не работает, выводит меню и зависает(((

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)