充..3
充..5
....7
充.....8
腅..9
..10
() ( ), - . . , .
:
(). . () . . , .
(MB). MB . MB , , .
3) (). , . : , , ( ).
: , .
, , .
, .
- . , . , , . 8 .
, . . .
, , , . , , . , , . MB , ,
|
|
. , , , .
, , , , .
Visual Prolog'a . , , , , . .
. .
, .
. Prolog.
Prolog. . , . . , . . , . : ; ; .
, , .
, , , , .
1) .., : , , , 2006.
2) .., : ,
, , 2007.
:
database
loc(integer, integer),
selection(string),
result(string),
second(string)
predicates
lopata(string)
cena(string, string)
clearloc
clearSelection
clearResult
clearSecond
q1
q2
q3
q4
q5
q6
addloc(integer, integer)
begin
continue(integer)
continue2(integer)
menu
getSolve
print(string)
|
|
getAnswer(integer, integer, integer, integer)
resultat(string, integer, integer, integer, integer, integer)
loclist(integer, integer, string)
showInfo(string)
clauses
continue2(1):-begin.
continue2(2):-
removewindow,
exit.
showInfo(X):-resultat(X,X1, X2, X3, X4, X5),
loclist(1, X1, Y1),
loclist(2, X2, Y2),
loclist(3, X3, Y3),
loclist(4, X4, Y4),
loclist(5, X5, Y5),
write(Y1, ' ', Y2, ' ', Y3, ' ', Y4, ' ', Y5, ' '), nl.
getAnswer(X, A, B, 1):- readint(X), X >= A, X <= B; X=4.
getAnswer(X, A, B, 0):- readint(X), X >= A, X <= B.
getSolve:-
lopata(X),
not(selection(X)),
print(X),!,
asserta(selection(X)),
getSolve.
print(X):- X<> "None",
clearResult,
asserta(result("yes")),
cena(X, Y),
write(X), nl,
write("Cena: ", Y, " rub"), nl.
menu:-result("yes"), second("no"),
write(" 1. Drugoi variant"), nl,
write(" 2. Zanovo"), nl,
write(" 3. Zakonchit rabotu"), nl,
readint(Z), nl, continue(Z).
menu:-result("no"), second("no"),
write("Takogo ne nashlos, no mojno posmotret drugoe"), nl,
write(" 1. Drugoi variant"), nl,
write(" 2. Zanovo"), nl,
write(" 3. Zakonchit rabotu"), nl,
readint(Z), nl, continue(Z).
menu:-result("no"), second("yes"),
write("Drygih nety"), nl,
write(" 1. Drugoi variant"), nl,
write(" 2. Zanovo"), nl,
write(" 3. Zakonchit rabotu"), nl,
readint(Z), nl, continue(Z).
menu:-result("yes"), second("yes"),
write("Dalee? \n"), nl,
write(" 1. Zanovo"), nl,
write(" 2. Zakonchit rabotu"), nl,
readint(Z), nl, continue2(Z).
Clearloc:- retractall(loc(_,_)).
ClearSelection:- retractall(selection(_)).
ClearResult:- retractall(result(_)).
ClearSecond:-retractall(second(_)).
addloc(X, Y):- Y<>4, asserta(loc(X,Y)).
addloc(X, 4):- asserta(loc(X,1)), asserta(loc(X,2)), asserta(loc(X,3)).
continue(3):-
removewindow,
exit.
continue(2):-
begin.
continue(1):-
clearSecond,
asserta(second("yes")),
clearResult,
asserta(result("no")),
addloc(5, 1), addloc(5, 2),
addloc(6, 1), addloc(6, 2), addloc(6, 3),
getSolve,
menu.
begin:- clearloc,
clearSelection,
clearResult,
clearSecond,
asserta(result("no")),
asserta(second("no")),
q1,
menu.
%Opisanie voprosov
q1:-
clearwindow,
write("Dlia 4ego vam nujna lopata?\n"), nl,
write(" 1. Lublu s ytra kopat sneg"), nl,
write(" 2. Dlia sipy4ish materialov "), nl,
write(" 3. Kopat'"), nl,
getAnswer(Z, 1, 3, 0), nl, addloc(1, Z), q2.
q1:-q1.
q2:-loc(2, _),
menu.
q2:-
loc(1, 1),
write("Mojet traktor? \n"),
write(" 1. Nee"), nl,
write(" 2. Horoshaia ideia"), nl,
getAnswer(Z, 1, 2, 0), nl, addloc(2, Z), addloc(5, 0), addloc(4, 0), q3.
q2:-
loc(1, W), W<>1,
addloc(2, 0),
q3.
q2:-q2.
q3:-loc(3, _),
menu.
q3:-
loc(1, 3),
q4.
q3:-
loc(2, 2),
addloc(3, 0),
q6.
q3:-
loc(2, 2),
loc(3, _),
q6.
q3:-
loc(1, F), F<>3,
write("Viberite proizvoditelya: \n"),
write(" 1. Fiskars(FIN)"), nl,
write(" 2. Alternativa(RUS)"), nl,
write(" 3. Drugoi"), nl,
write(" 4. Vse ravno"), nl,
getAnswer(Z, 1, 3, 1), nl, addloc(3, Z), addloc(4, 0), q5.
q3:-q3.
q4:-loc(4, _),
menu.
q4:-
write("Poto4nee \n"), nl,
write(" 1. Obi4nie"), nl,
|
|
write(" 2. Na pojarnii shit"), nl,
write(" 3. Sapernie"), nl,
getAnswer(Z, 1, 3, 0), nl, addloc(4, Z), addloc(3, 0), q5.
q4:-q4.
q5:-loc(5, _), loc(6, _),
menu.
q5:-
loc(1, 1),
q6.
q5:-
loc(4, 2),
addloc(5, 0),
q6.
q5:-
loc(4, 2),
loc(5, _),
q6.
q5:-
loc(1, S), S<>1,
write("Material Cherenka? \n"),
write(" 1. Metal"), nl,
write(" 2. Derevo"), nl,
write(" 3. Vse ravno"), nl,
getAnswer(Z, 1, 2, 1), nl, addloc(5, Z), q6.
q5:-q5.
q6:-loc(6, _),
menu.
q6:-
loc(4, 2),
addloc(6, 1),!, getSolve.
q6:-
loc(4, 2),
loc(6, _),
!, getSolve.
q6:-
loc(1,1), loc(2,1), loc(3,1),
write("How much? \n"), nl,!, result("no"),
write(" 1. do 1000 rub"), nl,
write(" 2. dorozhe 1000 rub"), nl,
write(" 3. vse ravno"), nl,
getAnswer(Z, 1, 2, 1), nl, addloc(6, Z),!, getSolve.
q6:-
loc(1,2), loc(3,1), loc(5,2),
write("How much? \n"), nl,!, result("no"),
write(" 1. do 1000 rub"), nl,
write(" 2. dorozhe 1000 rub"), nl,
write(" 3. vse ravno"), nl,
getAnswer(Z, 1, 2, 1), nl, addloc(6, Z),!, getSolve.
q6:-
loc(1,3), loc(4,3), loc(5,2),
write("How much? \n"), nl,!, result("no"),
write(" 1. do 1000 rub"), nl,
write(" 2. dorozhe 1000 rub"), nl,
write(" 3. vse ravno"), nl,
getAnswer(Z, 1, 2, 1), nl, addloc(6, Z),!, getSolve.
q6:-
loc(2,2),
write("How much? \n"), nl,!, result("no"),
write(" 1. do 1000 rub"), nl,
write(" 2. dorozhe 1000 rub"), nl,
write(" 3. vse ravno"), nl,
getAnswer(Z, 1, 2, 1), nl, addloc(6, Z),!, getSolve.
q6:-
loc(5, 1),
write("How much? \n"), nl,!, result("no"),
write(" 1. do 1000 rub"), nl,
write(" 2. dorozhe 1000 rub"), nl,
write(" 3. vse ravno"), nl,
getAnswer(Z, 1, 2, 1), nl, addloc(6, Z),!, getSolve.
q6:- not(loc(6, _)),
write("How much? \n"), nl,!, result("no"),
write(" 1. do 100 rub"), nl,
write(" 2. do 1000 rub"), nl,
write(" 3. dorozhe 1000 rub"), nl,
write(" 4. vse ravno"), nl,
getAnswer(Z, 1, 3, 1), nl, addloc(6, Z),!, getSolve.
% Baza dannih
lopata("Fiskars 143600"):-
loc(1, 1),
loc(2, 1),
loc(3, 1),
loc(4, 0),
loc(5, 0),
loc(6, 1).
lopata("Fiskars 142610"):-
loc(1, 1),
loc(2, 1),
loc(3, 1),
loc(4, 0),
loc(5, 0),
loc(6, 2).
lopata("stalnaia krashenaia 355*380"):-
loc(1, 1),
loc(2, 1),
loc(3, 2),
loc(4, 0),
loc(5, 0),
loc(6, 1).
lopata("lopata plastmassovaia 400*460mm"):-
loc(1, 1),
loc(2, 1),
loc(3, 2),
loc(4, 0),
loc(5, 0),
loc(6, 2).
lopata("lopata dvijok na kolesah"):-
loc(1, 1),
loc(2, 1),
loc(3, 2),
loc(4, 0),
loc(5, 0),
loc(6, 3).
lopata("detskaia pomogat bydet"):-
loc(1, 1),
loc(2, 1),
loc(3, 3),
loc(4, 0),
loc(5, 0),
loc(6, 1).
lopata("lopata Rusich-4 alluminievaia"):-
loc(1, 1),
loc(2, 1),
loc(3, 3),
loc(4, 0),
loc(5, 0),
loc(6, 2).
lopata("Novital BIOCCOLO"):-
loc(1, 1),
loc(2, 1),
loc(3, 3),
loc(4, 0),
loc(5, 0),
loc(6, 3).
lopata("Belarus"):-
loc(1, 1),
loc(2, 2),
loc(3, 0),
|
|
loc(4, 0),
loc(5, 0),
loc(6, 1).
lopata("KIROVEC"):-
loc(1, 1),
loc(2, 2),
loc(3, 0),
loc(4, 0),
loc(5, 0),
loc(6, 2).
lopata("FISKARS 132402"):-
loc(1, 2),
loc(2, 0),
loc(3, 1),
loc(4, 0),
loc(5, 1),
loc(6, 1).
lopata("Fiskars 132500"):-
loc(1, 2),
loc(2, 0),
loc(3, 1),
loc(4, 0),
loc(5, 1),
loc(6, 2).
lopata("FISKARS 131650"):-
loc(1, 2),
loc(2, 0),
loc(3, 1),
loc(4, 0),
loc(5, 2),
loc(6, 1).
lopata("Fiskars 131410"):-
loc(1, 2),
loc(2, 0),
loc(3, 1),
loc(4, 0),
loc(5, 2),
loc(6, 2).
lopata("lopata M-1016"):-
loc(1, 2),
loc(2, 0),
loc(3, 2),
loc(4, 0),
loc(5, 1),
loc(6, 1).
lopata("lopata M-1022"):-
loc(1, 2),
loc(2, 0),
loc(3, 2),
loc(4, 0),
loc(5, 1),
loc(6, 2).
lopata("lopata M-1015"):-
loc(1, 2),
loc(2, 0),
loc(3, 2),
loc(4, 0),
loc(5, 2),
loc(6, 1).
lopata("lopata M-1020"):-
loc(1, 2),
loc(2, 0),
loc(3, 2),
loc(4, 0),
loc(5, 2),
loc(6, 2).
lopata("lopata M-1033"):-
loc(1, 2),
loc(2, 0),
loc(3, 2),
loc(4, 0),
loc(5, 2),
loc(6, 3).
lopata("Centrinstrument, lopata - molodost"):-
loc(1, 2),
loc(2, 0),
loc(3, 3),
loc(4, 0),
loc(5, 1),
loc(6, 1).
lopata("Nava"):-
loc(1, 2),
loc(2, 0),
loc(3, 3),
loc(4, 0),
loc(5, 1),
loc(6, 2).
lopata("SOVKOVAIA BEZ CHERENKA 17421"):-
loc(1, 2),
loc(2, 0),
loc(3, 3),
loc(4, 0),
loc(5, 2),
loc(6, 1).
lopata("Centrinstryment, lopata - dachnik"):-
loc(1, 2),
loc(2, 0),
loc(3, 3),
loc(4, 0),
loc(5, 2),
loc(6, 2).
lopata("Terraline 03786"):-
loc(1, 2),
loc(2, 0),
loc(3, 3),
loc(4, 0),
loc(5, 2),
loc(6, 3).
lopata("Fiskars 131412"):-
loc(1, 3),
loc(2, 0),
loc(3, 0),
loc(4, 1),
loc(5, 1),
loc(6, 1).
lopata("FISKARS 131510"):-
loc(1, 3),
loc(2, 0),
loc(3, 0),
loc(4, 1),
loc(5, 1),
loc(6, 2).
lopata("Lko-4 s rebrom"):-
loc(1, 3),
loc(2, 0),
loc(3, 0),
loc(4, 1),
loc(5, 2),
loc(6, 1).
lopata("Fiskars 131640"):-
loc(1, 3),
loc(2, 0),
loc(3, 0),
loc(4, 1),
loc(5, 2),
loc(6, 2).
lopata("Fiskars 131410"):-
loc(1, 3),
loc(2, 0),
loc(3, 0),
loc(4, 1),
loc(5, 2),
loc(6, 3).
lopata("lopata"):-
loc(1, 3),
loc(2, 0),
loc(3, 0),
loc(4, 2),
loc(5, 0),
loc(6, 1).
lopata("FIT skladnaia"):-
loc(1, 3),
loc(2, 0),
loc(3, 0),
loc(4, 3),
loc(5, 1),
loc(6, 1).
lopata("Titanovaia"):-
loc(1, 3),
loc(2, 0),
loc(3, 0),
loc(4, 3),
loc(5, 1),
loc(6, 2).
lopata("Matrix 61425"):-
loc(1, 3),
loc(2, 0),
loc(3, 0),
loc(4, 3),
loc(5, 2),
loc(6, 1).
lopata("Azart b"):-
loc(1, 3),
loc(2, 0),
loc(3, 0),
loc(4, 3),
loc(5, 2),
loc(6, 2).
lopata("None").
%Ceni%
cena("Fiskars 143600", "990").
cena("Fiskars 142610", "1947").
cena("stalnaia krashenaia 355*380", "70").
cena("lopata plastmassovaia 400*460mm", "117").
cena("lopata dvijok na kolesah", "1100").
cena("detskaia pomogat bydet", "94").
cena("lopata Rusich-4 alluminievaia", "625").
cena("Novital BIOCCOLO", "1950").
cena("KIROVEC", "7000000").
cena("Belarus", " v te4enii 3-eh let, v den po 999 ").
cena("FISKARS 132402", "650").
cena("Fiskars 132500", "2323").
cena("FISKARS 131650", "520").
cena("Fiskars 131410", "1100").
cena("lopata M-1016", "278").
cena("lopata M-1022", "1001").
cena("lopata M-1015", "95").
cena("lopata M-1020", "295").
cena("lopata M-1033", "1001").
cena("Centrinstrument, lopata - molodost", "492").
cena("Nava", "1047").
cena("SOVKOVAIA BEZ CHERENKA 17421", "77").
cena("Centrinstryment, lopata - dachnik", "854").
cena("Terraline 03786", "1474").
|
|
cena("Fiskars 131412", "783").
cena("FISKARS 131510", "1990").
cena("Lko-4 s rebrom", "99").
cena("Fiskars 131640", "588").
cena("Fiskars 131410", "1190").
cena("lopata", "34").
cena("FIT skladnaia", "500 000").
cena("Titanovaia","1500").
cena("Matrix 61425", "124").
cena("Azart b", "1050").
cena("None", "-").
loclist(1, 1, "Lublu s ytra kopat sneg").
loclist(1, 2, "Dlia sipy4ish materialov").
loclist(1, 3, "Shtikovie").
loclist(2, 1, "Nee").
loclist(2, 2, "Horoshaia ideia").
loclist(2, 0, "").
loclist(3, 1, "Fiskars").
loclist(3, 2, "Alternativa").
loclist(3, 3, " Drugoi").
loclist(3, 0, "").
loclist(4, 1, "Obi4nie").
loclist(4, 2, "Na pojarnii shit").
loclist(4, 3, "Sapernie").
loclist(4, 0, "").
loclist(5, 1, "Metal").
loclist(5, 2, "Derevo").
resultat("Fiskars 143600", 1, 1, 1, 0, 1).
resultat("Fiskars 142610", 1, 1, 1, 0, 1).
resultat("stalnaia krashenaia 355*380", 1, 1, 2, 0, 1).
resultat("lopata plastmassovaia 400*460mm", 1, 1, 2, 0, 1).
resultat("lopata dvijok na kolesah", 1, 1, 2, 0, 1).
resultat("detskaia pomogat bydet", 1, 1, 3, 0, 1).
resultat("lopata Rusich-4 alluminievaia", 1, 1, 3, 0, 1).
resultat("Novital BIOCCOLO", 1, 1, 3, 0, 1).
resultat("KIROVEC", 1, 2, 0, 0, 1).
resultat("Belarus", 1, 2, 0, 0, 1).
resultat("FISKARS 132402", 2, 0, 1, 0, 1).
resultat("Fiskars 132500", 2, 0, 1, 0, 1).
resultat("FISKARS 131650", 2, 0, 1, 0, 2).
resultat("Fiskars 131410", 2, 0, 1, 0, 2).
resultat("lopata M-1016", 2, 0, 2, 0, 1).
resultat("lopata M-1022", 2, 0, 2, 0, 1).
resultat("lopata M-1015", 2, 0, 2, 0, 2).
resultat("lopata M-1020", 2, 0, 2, 0, 2).
resultat("lopata M-1033", 2, 0, 2, 0, 2).
resultat("Centrinstrument, lopata - molodost", 2, 0, 3, 0, 1).
resultat("Nava", 2, 0, 3, 0, 1).
resultat("Terraline 03786", 2, 0, 3, 0, 2).
resultat("SOVKOVAIA BEZ CHERENKA 17421", 2, 0, 3, 0, 2).
resultat("Centrinstryment, lopata - dachnik", 2, 0, 3, 0, 2).
resultat("Fiskars 131412", 3, 0, 0, 1, 1).
resultat("FISKARS 131510", 3, 0, 0, 1, 1).
resultat("Lko-4 s rebrom", 3, 0, 0, 1, 2).
resultat("Fiskars 131640", 3, 0, 0, 1, 2).
resultat("Fiskars 131410", 3, 0, 0, 1, 2).
resultat("lopata", 3, 0, 0, 2, 2).
resultat("FIT skladnaia", 3, 0, 0, 3, 1).
resultat("Titanovaia", 3, 0, 0, 3, 1).
resultat("Matrix 61425", 3, 0, 0, 3, 2).
resultat("Azart b", 3, 0, 0, 3, 2).
goal
makewindow(2,30,30, " Expert system: auto selection ", 0, 0, 25, 80), nl,
write("Viberite lopaty"), nl,
begin.