Advertisement
causevd

clips

Nov 1st, 2013
6,542
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.72 KB | None | 0 0
  1. (deftemplate student
  2. (slot ime (type STRING) )
  3. (slot prezime (type STRING))
  4. (slot indeks(type INTEGER))
  5. (slot predmeti (type INTEGER))
  6. (slot prosek (type FLOAT))
  7. )
  8.  
  9. (deftemplate predmet
  10. (slot ime (type STRING))
  11. (slot kod(type INTEGER))
  12. (slot profesor (type STRING))
  13. (slot asistent (type STRING))
  14. (multislot studenti_indeksi (type STRING ))
  15. )
  16.  
  17. (assert ( student (ime "Nikola") (prezime "Badev") (indeks 123) (predmeti 35) (prosek 9)))
  18.  
  19. (assert ( student (ime "Aleksandar") (prezime "Sarievski") (indeks 124) (predmeti 5) (prosek 8.5)))
  20.  
  21. (assert ( student (ime "Petranka") (prezime "Kostadinova") (indeks 125) (predmeti 16) (prosek 10)))
  22.  
  23. (assert ( predmet (ime "ES" ) (kod 125 ) (profesor "Andrea Kulakov") (asistent "Eftim Zdravevski") ))
  24.  
  25. (facts)
  26.  
  27. (defrule zgolemi-polozeni
  28. ?fact<-(student (predmeti ?p) (indeks ?ind))
  29. (not (zgolemeno-polozeni ?ind)) ; za da ne vleguva vo beskonecna jamka
  30. =>
  31. (assert (zgolemeno-polozeni ?ind)) ; go dodavame ovoj fakt za po prvoto izvrsuvanje prethodniot uslov da ne bide ispolnet
  32. (modify ?fact (predmeti (+ ?p 1)))
  33. (printout t "Zgolemeno"))
  34.  
  35.  
  36. (defrule presmetaj-godina
  37. (student (predmeti ?p) (indeks ?ind))
  38. =>
  39. (if (and (>= ?p 0)(<= ?p 9) ) then
  40. (printout t "Prva" crlf )
  41. (assert (godina 1 ?ind)))
  42. (if (and (>= ?p 10)(<= ?p 19) ) then
  43. (printout t "Vtora" crlf )
  44. (assert (godina 2 ?ind)))
  45. (if (and (>= ?p 20)(<= ?p 29) ) then
  46. (printout t "Vtora" crlf )
  47. (assert (godina 3 ?ind)))
  48. (if (>= ?p 30) then
  49. (printout t "Cetvrta" crlf )
  50. (assert (godina 4 ?ind)))
  51. )
  52.  
  53. (defglobal ?*suma-polozeni* = 0)
  54.  
  55.  
  56. (defrule proverka-suma
  57. (student (predmeti ?p) (indeks ?ind))
  58. (not (izbrojani-polozeni ?ind)) ; za da znaeme deka ispitite od ovoj student ne se veke izbrojani
  59. =>
  60. (bind ?*suma-polozeni* (+ ?p ?*suma-polozeni* ))
  61. (assert (izbrojani-polozeni ?ind)) ; za sledniot pat da ne gi izbroi ispitite na ovoj student
  62. )
  63.  
  64. (deffunction vrati ()
  65. return ?*suma-polozeni*
  66. )
  67.  
  68. (facts)
  69.  
  70. (vrati)
  71.  
  72. (assert ( student (ime "Petko") (prezime "Petkovski") (indeks 123123 ) (predmeti 0 ) (prosek 0) ))
  73.  
  74. (assert ( student (ime "Ratko") (prezime "Petkovski") (indeks 123124 ) (predmeti 10) (prosek 6) ))
  75.  
  76. (defrule print-student
  77. (student (ime ?i) (prezime ?p) (indeks ?ind))
  78. =>
  79. (printout t "Student Ime:" ?i " Prezime:" ?p " Indeks:" ?ind crlf))
  80.  
  81. (defrule kazni-student-vnesuvanje
  82. =>
  83. (printout t "Vnesi indeks:" crl)
  84. (bind ?indeks (read))
  85. (assert (student-za-kaznuvanje ?indeks))
  86. )
  87.  
  88. (defrule kazni-student
  89. ?fact-kaznuvanje<-(student-za-kaznuvanje ?indeks)
  90. ?fact<-(student (indeks ?indeks))
  91. =>
  92. (printout t "Studentot so indeks: " ?indeks " ke bide kaznet i izbrisan od fakultet." crlf)
  93. (modify ?fact (prosek 0 )(predmeti 0))
  94. (retract ?fact-kaznuvanje)
  95. (retract ?fact)
  96. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement