Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (deftemplate student
- (slot ime (type STRING) )
- (slot prezime (type STRING))
- (slot indeks(type INTEGER))
- (slot predmeti (type INTEGER))
- (slot prosek (type FLOAT))
- )
- (deftemplate predmet
- (slot ime (type STRING))
- (slot kod(type INTEGER))
- (slot profesor (type STRING))
- (slot asistent (type STRING))
- (multislot studenti_indeksi (type STRING ))
- )
- (assert ( student (ime "Nikola") (prezime "Badev") (indeks 123) (predmeti 35) (prosek 9)))
- (assert ( student (ime "Aleksandar") (prezime "Sarievski") (indeks 124) (predmeti 5) (prosek 8.5)))
- (assert ( student (ime "Petranka") (prezime "Kostadinova") (indeks 125) (predmeti 16) (prosek 10)))
- (assert ( predmet (ime "ES" ) (kod 125 ) (profesor "Andrea Kulakov") (asistent "Eftim Zdravevski") ))
- (facts)
- (defrule zgolemi-polozeni
- ?fact<-(student (predmeti ?p) (indeks ?ind))
- (not (zgolemeno-polozeni ?ind)) ; za da ne vleguva vo beskonecna jamka
- =>
- (assert (zgolemeno-polozeni ?ind)) ; go dodavame ovoj fakt za po prvoto izvrsuvanje prethodniot uslov da ne bide ispolnet
- (modify ?fact (predmeti (+ ?p 1)))
- (printout t "Zgolemeno"))
- (defrule presmetaj-godina
- (student (predmeti ?p) (indeks ?ind))
- =>
- (if (and (>= ?p 0)(<= ?p 9) ) then
- (printout t "Prva" crlf )
- (assert (godina 1 ?ind)))
- (if (and (>= ?p 10)(<= ?p 19) ) then
- (printout t "Vtora" crlf )
- (assert (godina 2 ?ind)))
- (if (and (>= ?p 20)(<= ?p 29) ) then
- (printout t "Vtora" crlf )
- (assert (godina 3 ?ind)))
- (if (>= ?p 30) then
- (printout t "Cetvrta" crlf )
- (assert (godina 4 ?ind)))
- )
- (defglobal ?*suma-polozeni* = 0)
- (defrule proverka-suma
- (student (predmeti ?p) (indeks ?ind))
- (not (izbrojani-polozeni ?ind)) ; za da znaeme deka ispitite od ovoj student ne se veke izbrojani
- =>
- (bind ?*suma-polozeni* (+ ?p ?*suma-polozeni* ))
- (assert (izbrojani-polozeni ?ind)) ; za sledniot pat da ne gi izbroi ispitite na ovoj student
- )
- (deffunction vrati ()
- return ?*suma-polozeni*
- )
- (facts)
- (vrati)
- (assert ( student (ime "Petko") (prezime "Petkovski") (indeks 123123 ) (predmeti 0 ) (prosek 0) ))
- (assert ( student (ime "Ratko") (prezime "Petkovski") (indeks 123124 ) (predmeti 10) (prosek 6) ))
- (defrule print-student
- (student (ime ?i) (prezime ?p) (indeks ?ind))
- =>
- (printout t "Student Ime:" ?i " Prezime:" ?p " Indeks:" ?ind crlf))
- (defrule kazni-student-vnesuvanje
- =>
- (printout t "Vnesi indeks:" crl)
- (bind ?indeks (read))
- (assert (student-za-kaznuvanje ?indeks))
- )
- (defrule kazni-student
- ?fact-kaznuvanje<-(student-za-kaznuvanje ?indeks)
- ?fact<-(student (indeks ?indeks))
- =>
- (printout t "Studentot so indeks: " ?indeks " ke bide kaznet i izbrisan od fakultet." crlf)
- (modify ?fact (prosek 0 )(predmeti 0))
- (retract ?fact-kaznuvanje)
- (retract ?fact)
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement