%База подозреваемых domains rost,vozrast,statia,srok,Pol,volos = integer key,y,z,A,B,C,D,E,F,G = integer tatu,Shram = string database-Prokuratura zek(Pol,rost,vozrast,volos,statia,srok,tatu,Shram) Predicates rpt menu saves(integer) clearb %----------------------- key_menu1(key,y) key_menu2(key,y) key_menu3(key,y,A,B,C) key_menu4(key,y,A,B,C,D) key_menu41(key,y,A,B,C,D,E,F) key_menu42(key,y,A,B,C,D,E,F,G) key_menu5(key,y) key_menu6(key,y,A) key_menu7(key,y,A,B) key_menu8(key,y,A,B,C) %----------------------- go1(integer) go2(integer) go3(integer,integer) go4(integer,integer,integer) go5(integer,integer,integer,integer) go6(integer,integer,integer,integer,integer) go7(integer,integer,integer,integer,integer,integer) go8(integer,integer,integer,integer,integer,integer,integer) go999(integer,integer,integer,integer,integer,integer,integer,integer) find1(integer) find2(integer,integer) find3(integer,integer,integer) find4(integer,integer,integer,integer) %----------------------- see del(integer,integer) seePoisk(integer,integer,integer,integer,integer,integer,integer) clauses rpt. rpt:-!,rpt. saves(1):- save("zek.dat",Prokuratura),clearb. saves(0):- save("zek.dat",Prokuratura),clearb,consult("zek.dat",Prokuratura). clearb:-retract(zek(_,_,_,_,_,_,_,_)),fail;true. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% key_menu1(0,Y) :- inkey(Key), key_menu1(Key,Y). key_menu1(72,Y) :- field_attr(Y,0,16,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(4,0). key_menu1(80,Y) :- field_attr(Y,0,16,7), Y<4,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu1(13,Y) :-go1(Y). %----------------------------------------------------- key_menu2(0,Y) :- inkey(Key), key_menu2(Key,Y). key_menu2(72,Y) :- field_attr(Y,0,23,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(1,0). key_menu2(80,Y) :- field_attr(Y,0,23,7), Y<1,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu2(13,Y) :-removewindow,go2(Y). %----------------------------------------------------- key_menu3(0,Y,A,B,C) :- inkey(Key), key_menu3(Key,Y,A,B,C). key_menu3(72,Y,A,B,C) :- field_attr(Y,0,23,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(3,0). key_menu3(80,Y,A,B,C) :- field_attr(Y,0,23,7), Y<3,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu3(13,Y,A,B,C) :-removewindow,go5(A,B,C,Y). %----------------------------------------------------- key_menu4(0,Y,A,B,C,D) :- inkey(Key), key_menu4(Key,Y,A,B,C,D). key_menu4(72,Y,A,B,C,D) :- field_attr(Y,0,28,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(3,0). key_menu4(80,Y,A,B,C,D) :- field_attr(Y,0,28,7), Y<3,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu4(13,Y,A,B,C,D) :-removewindow,go6(A,B,C,D,Y). %----------------------------------------------------- key_menu41(0,Y,A,B,C,D,E,F) :- inkey(Key), key_menu41(Key,Y,A,B,C,D,E,F). key_menu41(72,Y,A,B,C,D,E,F) :- field_attr(Y,0,23,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(3,0). key_menu41(80,Y,A,B,C,D,E,F) :- field_attr(Y,0,23,7), Y<3,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu41(13,Y,A,B,C,D,E,F) :-removewindow, go8(A,B,C,D,E,F,Y). %----------------------------------------------------- key_menu42(0,Y,A,B,C,D,E,F,G) :- inkey(Key), key_menu42(Key,Y,A,B,C,D,E,F,G). key_menu42(72,Y,A,B,C,D,E,F,G) :- field_attr(Y,0,23,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(3,0). key_menu42(80,Y,A,B,C,D,E,F,G) :- field_attr(Y,0,23,7), Y<3,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu42(13,Y,A,B,C,D,E,F,G) :-removewindow, go999(A,B,C,D,E,F,G,Y). %----------------------------------------------------- key_menu5(0,Y) :- inkey(Key), key_menu5(Key,Y). key_menu5(72,Y) :- field_attr(Y,0,23,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(1,0). key_menu5(80,Y) :- field_attr(Y,0,23,7), Y<1,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu5(13,Y) :-removewindow,find1(Y). %----------------------------------------------------- key_menu6(0,Y,A) :- inkey(Key), key_menu6(Key,Y,A). key_menu6(72,Y,A) :- field_attr(Y,0,23,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(4,0). key_menu6(80,Y,A) :- field_attr(Y,0,23,7), Y<4,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu6(13,Y,A) :-removewindow,find2(Y,A). %----------------------------------------------------- key_menu7(0,Y,A,B) :- inkey(Key), key_menu7(Key,Y,A,B). key_menu7(72,Y,A,B) :- field_attr(Y,0,28,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(4,0). key_menu7(80,Y,A,B) :- field_attr(Y,0,28,7), Y<4,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu7(13,Y,A,B) :-removewindow,find3(Y,A,B). %----------------------------------------------------- key_menu8(0,Y,A,B,C) :- inkey(Key), key_menu8(Key,Y,A,B,C). key_menu8(72,Y,A,B,C) :- field_attr(Y,0,28,7), Y>0,!, Z=Y-1, cursor(Z,0) ; cursor(3,0). key_menu8(80,Y,A,B,C) :- field_attr(Y,0,28,7), Y<3,!, Z=Y+1, cursor(Z,0) ; cursor(0,0). key_menu8(13,Y,A,B,C) :-removewindow,find4(Y,A,B,C). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% go1(0):-cursorform(2,2),rpt,makewindow(2,7,7,"Man/Woman",0,5,17,25), write("Man"),nl, write("Woman"), cursor(0,0), rpt, cursor(Y,_), field_attr(Y,0,23,112), inkey(Key),key_menu2(Key,Y), fail. go1(1):-makewindow(10,7,7,"Delete from baze",0,5,20,30), write("Vvedite vozrast PrestuPnuka: "), readint(L),nl, write("Vvedite rost PrestuPnuka: "), readint(K),nl,removewindow, del(K,L). go1(2):-makewindow(6,7,7,"Man/Woman",0,5,17,25), beeP, write("Man"),nl, write("Woman"), cursor(0,0), rPt, cursor(Y,_), field_attr(Y,0,23,112), inkey(Key),key_menu5(Key,Y), fail. go1(3):-see(). go1(4):-saves(1),exit. %----------------------------------------------------- go2(A):-makewindow(3,7,7,"Kakov rost(sP)?",0,5,17,25), write("Rost: "),readint(X),removewindow, go3(A,X). %----------------------------------------------------- go3(A,B):-makewindow(4,7,7,"Vvedite vozrast",0,5,17,25), write("Vozrast(let): "),nl,readint(X),removewindow, go4(A,B,X). %----------------------------------------------------- go4(A,B,C):-makewindow(5,7,7,"Cvet volos?",0,5,17,25), write("Brunet(ka)"),nl, write("Blondin(ka)"),nl, write("Shaten(ka)"),nl, write("Rusui(aya)"),nl, cursor(0,0), rPt, cursor(Y,_), field_attr(Y,0,23,112), inkey(Key),key_menu3(Key,Y,A,B,C), fail. %----------------------------------------------------- go5(A,B,C,D):-makewindow(6,7,7,"Statiya?",0,5,17,30), write("105 - UK RF (Ybiistvo)"),nl, write("162 - UK RF (Razboi)"),nl, write("158 - UK RF (Kraga)"),nl, write("166 - UK RF (Ugon)"),nl, cursor(0,0), rPt, cursor(Y,_), field_attr(Y,0,28,112), inkey(Key),key_menu4(Key,Y,A,B,C,D), fail. %----------------------------------------------------- go6(A,B,C,D,E):-makewindow(7,7,7,"Srok?",0,5,17,25), write("Vvedite srok: "),readint(F),removewindow, go7(A,B,C,D,E,F). %----------------------------------------------------- go7(A,B,C,D,E,F):-makewindow(5,7,7,"tatu",0,5,17,25), write("Net"),nl, write("Na spine"),nl, write("Na ruke"),nl, write("Na noge"),nl, cursor(0,0), rPt, cursor(Y,_), field_attr(Y,0,23,112), inkey(Key),key_menu41(Key,Y,A,B,C,D,E,F), fail. %----------------------------------------------------- go8(A,B,C,D,E,F,G):-makewindow(5,7,7,"Shram",0,5,17,25), write("Net"),nl, write("Na spine"),nl, write("Na ruke"),nl, write("Na noge"),nl, cursor(0,0), rPt, cursor(Y,_), field_attr(Y,0,23,112), inkey(Key),key_menu42(Key,Y,A,B,C,D,E,F,G), fail. %----------------------------------------------------- go999(A,B,C,D,E,F,G,Y):- Y=0,G=0,assertz(zek(A,B,C,D,E,F,"Net","Net")),saves(0),menu; Y=0,G=1,assertz(zek(A,B,C,D,E,F,"Net","Na spine")),saves(0),menu; Y=0,G=2,assertz(zek(A,B,C,D,E,F,"Net","Na ruke")),saves(0),menu; Y=0,G=3,assertz(zek(A,B,C,D,E,F,"Net","Na noge")),saves(0),menu; Y=1,G=0,assertz(zek(A,B,C,D,E,F,"Na spine","Net")),saves(0),menu; Y=1,G=1,assertz(zek(A,B,C,D,E,F,"Na spine","Na spine")),saves(0),menu; Y=1,G=2,assertz(zek(A,B,C,D,E,F,"Na spine","Na ruke")),saves(0),menu; Y=1,G=3,assertz(zek(A,B,C,D,E,F,"Na spine","Na noge")),saves(0),menu; Y=2,G=0,assertz(zek(A,B,C,D,E,F,"Na ruke","Net")),saves(0),menu; Y=2,G=1,assertz(zek(A,B,C,D,E,F,"Na ruke","Na spine")),saves(0),menu; Y=2,G=2,assertz(zek(A,B,C,D,E,F,"Na ruke","Na ruke")),saves(0),menu; Y=2,G=3,assertz(zek(A,B,C,D,E,F,"Na ruke","Na noge")),saves(0),menu; Y=3,G=0,assertz(zek(A,B,C,D,E,F,"Na noge","Net")),saves(0),menu; Y=3,G=1,assertz(zek(A,B,C,D,E,F,"Na noge","Na spine")),saves(0),menu; Y=3,G=2,assertz(zek(A,B,C,D,E,F,"Na noge","Na ruke")),saves(0),menu; Y=3,G=3,assertz(zek(A,B,C,D,E,F,"Na noge","Na noge")),saves(0),menu. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% menu :- makewindow(1,7,7,"PrestuPniki",0,0,8,18), clearwindow, write("Add to baze"),nl, write("Del froP baze"),nl, write("Find in baze"),nl, write("See baze"),nl, write("Exit"),nl, cursor(0,0), rPt, cursor(Y,_), field_attr(Y,0,16,112), inkey(Key),key_menu1(Key,Y), fail. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% find1(N):-makewindow(3,7,7,"Kakov rost(sm)?",0,5,17,25), clearwindow, write("100 - 120"),nl, write("120 - 140"),nl, write("140 - 160"),nl, write("160 - 180"),nl, write("180 - 200"),nl, cursor(0,0), rPt, cursor(Y,_), field_attr(Y,0,23,112), inkey(Key),key_menu6(Key,Y,N), fail. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% find2(M,N):-makewindow(6,7,7,"vozrast PrestuPnika?",0,5,17,30), clearwindow, write("18 - 30"),nl, write("31 - 42"),nl, write("43 - 54"),nl, write("55 - 72"),nl, write("73 - 86"),nl, cursor(0,0), rPt, cursor(Y,_), field_attr(Y,0,28,112), inkey(Key),key_menu7(Key,Y,N,M), fail. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% find3(L,N,M):-makewindow(6,7,7,"srok PrestuPnika?",0,5,17,30), clearwindow, write("1 - 15"),nl, write("16 - 30"),nl, write("31 - 45"),nl, write("46 - 60"),nl, cursor(0,0), rPt, cursor(Y,_), field_attr(Y,0,28,112), inkey(Key),key_menu8(Key,Y,N,M,L), fail. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% find4(P,N,M,L):- makewindow(50,100,1,"ProsPotr",0,10,35,60), writef("%10|%5|%6|%9|%7|%8|%6|","Zek"," Pol "," rost "," vozrast "," volos "," statia "," srok "), P=0,M=0,L=0,seePoisk(N,1,15,100,120,18,30); P=0,M=0,L=1,seePoisk(N,1,15,100,120,31,42); P=0,M=0,L=2,seePoisk(N,1,15,100,120,43,54); P=0,M=0,L=3,seePoisk(N,1,15,100,120,55,72); P=0,M=0,L=4,seePoisk(N,1,15,100,120,73,86); P=0,M=1,L=0,seePoisk(N,1,15,120,140,18,30); P=0,M=1,L=1,seePoisk(N,1,15,120,140,31,42); P=0,M=1,L=2,seePoisk(N,1,15,120,140,43,54); P=0,M=1,L=3,seePoisk(N,1,15,120,140,55,72); P=0,M=1,L=4,seePoisk(N,1,15,120,140,73,86); P=0,M=2,L=0,seePoisk(N,1,15,140,160,18,30); P=0,M=2,L=1,seePoisk(N,1,15,140,160,31,42); P=0,M=2,L=2,seePoisk(N,1,15,140,160,43,54); P=0,M=2,L=3,seePoisk(N,1,15,140,160,55,72); P=0,M=2,L=4,seePoisk(N,1,15,140,160,73,86); P=0,M=3,L=0,seePoisk(N,1,15,160,180,18,30); P=0,M=3,L=1,seePoisk(N,1,15,160,180,31,42); P=0,M=3,L=2,seePoisk(N,1,15,160,180,43,54); P=0,M=3,L=3,seePoisk(N,1,15,160,180,55,72); P=0,M=3,L=4,seePoisk(N,1,15,160,180,73,86); P=0,M=4,L=0,seePoisk(N,1,15,180,200,18,30); P=0,M=4,L=1,seePoisk(N,1,15,180,200,31,42); P=0,M=4,L=2,seePoisk(N,1,15,180,200,43,54); P=0,M=4,L=3,seePoisk(N,1,15,180,200,55,72); P=0,M=4,L=4,seePoisk(N,1,15,180,200,73,86); P=1,M=0,L=0,seePoisk(N,16,30,100,120,18,30); P=1,M=0,L=1,seePoisk(N,16,30,100,120,31,42); P=1,M=0,L=2,seePoisk(N,16,30,100,120,43,54); P=1,M=0,L=3,seePoisk(N,16,30,100,120,55,72); P=1,M=0,L=4,seePoisk(N,16,30,100,120,73,86); P=1,M=1,L=0,seePoisk(N,16,30,120,140,18,30); P=1,M=1,L=1,seePoisk(N,16,30,120,140,31,42); P=1,M=1,L=2,seePoisk(N,16,30,120,140,43,54); P=1,M=1,L=3,seePoisk(N,16,30,120,140,55,72); P=1,M=1,L=4,seePoisk(N,16,30,120,140,73,86); P=1,M=2,L=0,seePoisk(N,16,30,140,160,18,30); P=1,M=2,L=1,seePoisk(N,16,30,140,160,31,42); P=1,M=2,L=2,seePoisk(N,16,30,140,160,43,54); P=1,M=2,L=3,seePoisk(N,16,30,140,160,55,72); P=1,M=2,L=4,seePoisk(N,16,30,140,160,73,86); P=1,M=3,L=0,seePoisk(N,16,30,160,180,18,30); P=1,M=3,L=1,seePoisk(N,16,30,160,180,31,42); P=1,M=3,L=2,seePoisk(N,16,30,160,180,43,54); P=1,M=3,L=3,seePoisk(N,16,30,160,180,55,72); P=1,M=3,L=4,seePoisk(N,16,30,160,180,73,86); P=1,M=4,L=0,seePoisk(N,16,30,180,200,18,30); P=1,M=4,L=1,seePoisk(N,16,30,180,200,31,42); P=1,M=4,L=2,seePoisk(N,16,30,180,200,43,54); P=1,M=4,L=3,seePoisk(N,16,30,180,200,55,72); P=1,M=4,L=4,seePoisk(N,16,30,180,200,73,86); P=2,M=0,L=0,seePoisk(N,31,45,100,120,18,30); P=2,M=0,L=1,seePoisk(N,31,45,100,120,31,42); P=2,M=0,L=2,seePoisk(N,31,45,100,120,43,54); P=2,M=0,L=3,seePoisk(N,31,45,100,120,55,72); P=2,M=0,L=4,seePoisk(N,31,45,100,120,73,86); P=2,M=1,L=0,seePoisk(N,31,45,120,140,18,30); P=2,M=1,L=1,seePoisk(N,31,45,120,140,31,42); P=2,M=1,L=2,seePoisk(N,31,45,120,140,43,54); P=2,M=1,L=3,seePoisk(N,31,45,120,140,55,72); P=2,M=1,L=4,seePoisk(N,31,45,120,140,73,86); P=2,M=2,L=0,seePoisk(N,31,45,140,160,18,30); P=2,M=2,L=1,seePoisk(N,31,45,140,160,31,42); P=2,M=2,L=2,seePoisk(N,31,45,140,160,43,54); P=2,M=2,L=3,seePoisk(N,31,45,140,160,55,72); P=2,M=2,L=4,seePoisk(N,31,45,140,160,73,86); P=2,M=3,L=0,seePoisk(N,31,45,160,180,18,30); P=2,M=3,L=1,seePoisk(N,31,45,160,180,31,42); P=2,M=3,L=2,seePoisk(N,31,45,160,180,43,54); P=2,M=3,L=3,seePoisk(N,31,45,160,180,55,72); P=2,M=3,L=4,seePoisk(N,31,45,160,180,73,86); P=2,M=4,L=0,seePoisk(N,31,45,180,200,18,30); P=2,M=4,L=1,seePoisk(N,31,45,180,200,31,42); P=2,M=4,L=2,seePoisk(N,31,45,180,200,43,54); P=2,M=4,L=3,seePoisk(N,31,45,180,200,55,72); P=2,M=4,L=4,seePoisk(N,31,45,180,200,73,86); P=3,M=0,L=0,seePoisk(N,46,60,100,120,18,30); P=3,M=0,L=1,seePoisk(N,46,60,100,120,31,42); P=3,M=0,L=2,seePoisk(N,46,60,100,120,43,54); P=3,M=0,L=3,seePoisk(N,46,60,100,120,55,72); P=3,M=0,L=4,seePoisk(N,46,60,100,120,73,86); P=3,M=1,L=0,seePoisk(N,46,60,120,140,18,30); P=3,M=1,L=1,seePoisk(N,46,60,120,140,31,42); P=3,M=1,L=2,seePoisk(N,46,60,120,140,43,54); P=3,M=1,L=3,seePoisk(N,46,60,120,140,55,72); P=3,M=1,L=4,seePoisk(N,46,60,120,140,73,86); P=3,M=2,L=0,seePoisk(N,22,216,300,160,18,30); P=3,M=2,L=1,seePoisk(N,22,216,300,160,31,42); P=3,M=2,L=2,seePoisk(N,22,216,300,160,43,54); P=3,M=2,L=3,seePoisk(N,22,216,300,160,55,72); P=3,M=2,L=4,seePoisk(N,22,216,300,160,73,86); P=3,M=3,L=0,seePoisk(N,46,60,160,180,18,30); P=3,M=3,L=1,seePoisk(N,46,60,160,180,31,42); P=3,M=3,L=2,seePoisk(N,46,60,160,180,43,54); P=3,M=3,L=3,seePoisk(N,46,60,160,180,55,72); P=3,M=3,L=4,seePoisk(N,46,60,160,180,73,86); P=3,M=4,L=0,seePoisk(N,46,60,180,200,18,30); P=3,M=4,L=1,seePoisk(N,46,60,180,200,31,42); P=3,M=4,L=2,seePoisk(N,46,60,180,200,43,54); P=3,M=4,L=3,seePoisk(N,46,60,180,200,55,72); P=3,M=4,L=4,seePoisk(N,46,60,180,200,73,86). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% seePoisk(A,P1,P2,M1,M2,L1,L2):- zek(A,B,C,D,E,F,G,H), B>=M1,B<=M2, C>=L1,C<=L2, F>=P1,F<=P2, writef("%-3s|%4|%7|%5|%6|%4|%8|%-7d|",A,B,C,D,E,F,G,H),fail;true, readln(H),removewindow,menu. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% see():-makewindow(50,100,1,"ProsPotr",0,10,35,60), writef("%3|%4|%7|%5|%6|%4|%8|%7|","Pol","rost","vozrast","volos","statia","srok","Tatu","Shramb|"),nl; zek(A,B,C,D,E,F,G,H), writef("%3|%4|%7|%5|%6|%4|%8|%7|",A,B,C,D,E,F,G,H),nl,fail;true, readln(HHH),removewindow,menu. del(K,L):-retract(zek(_,K,L,_,_,_,_,_)),fail;true,saves(0). goal consult("zek.dat",prokuratura), menu.