[ slatko9 @ 30.03.2010. 21:41 ] @
Da li moze neko da mi uradi seminarski u clips-u? Odabir obuce je tema. Da bude ekspertni sistem,a ne pretrazivanje baze.Hvala vam unapred
[ vlaiv @ 31.03.2010. 08:41 ] @
Ne verujem da ce iko biti toliko velikodusan da to uradi umesto tebe.

Ali ipak verujem da ce dosta ljudi pokusati da ti pomogne da to uradis sama
ukoliko navedes kakvih problema imas i sta ne razumes u zadatku.
[ slatko9 @ 31.03.2010. 12:10 ] @
ako u sledecem programu umesto
automobil staviom obuca
nov-muska
polovan-zenska
strana-zimska
domaca-letnja
sportski-koza
klasican-obucarsko platno
karavan-rips
limuzina-velur
pick up-skaj
kako ovaj sledeci program pomaze kupcu u odabiru automobila,a ja imam da pisem odabir obuce,pa jel mogu to za zamenim i da mi program radi. i ako mozete da mi napisete neku proceduru za taj program(obucu) da mi program ne bude pretrazivanje baze vec ekspertni sistem.
evo programa koji ispituje za automobile
;Program ima ulogu da kupcu automobila pomogne pri izboru.
;U zavisnosti od zelja i mogucnosti predlaze koji je auto najpogodniji.


(deftemplate automobil
(slot nov_polovan
(allowed-values nil nov polovan))
(slot proizvodnja
(allowed-values nil strana domaca))
(slot namena
(allowed-values nil sportski klasican karavan limuzina pick-up))
(slot marka)
(slot cena)
)

(deffunction pitanja (?pitanje $?vrednosti)
(printout t ?pitanje crlf)
(bind ?odgovor (read))
(if (lexemep ?odgovor)
then (bind ?odgovor (lowcase ?odgovor)))
(while (not (member ?odgovor ?vrednosti)) do
(printout t ?pitanje crlf)
(bind ?odgovor (read))
(if (lexemep ?odgovor)
then (bind ?odgovor (lowcase ?odgovor))))
?odgovor)

(deffunction da-ne (?pitanje)
(bind ?p ( pitanja ?pitanje da ne d n))
(if (or (eq ?p da) (eq ?p d))
then TRUE
else FALSE))

(defrule start
=>
(assert (savet))
(printout t "Ovaj progran ce vam pomoci pri kupovini automobila.
U zavisnosti od vasih zelja i mogucnosti, pomocice
vam da napravite pravi izbor." crlf)
)

(defrule savet
(savet)
=>
(assert (izbor))
(printout t "Kupovina automobila nije nimalo jednostavan proces. Treba na takav nacin izabrati takvu,
nimalo jevtinu stvar, koja ce moci da vas sluzi duzi niz godina i da pritom moze da ispuni sve vase zahteve i potrebstine.
Zato budite vrlo oprezni pri takvoj odluci." crlf)
)

(defrule nov_polovan
(izbor)
=>
(if (da-ne "Ukoliko nemate dovoljno novca ili mozda mislite da je polovna stvar isto tako dobra kao i nova, mozda bi ste
hteli polovan automobil (da ili ne)")
then (assert (automobil (nov_polovan polovan)))
else (assert (automobil (nov_polovan nov))))
)

(defrule nov_automobil
?a<-(automobil (nov_polovan nov)(proizvodnja nil))
=>
(bind ?p
(pitanja "Kupovina novog automobila je mozda skuplja, ali je znatno sigurnija varijanta.
Da li imate u planu automobil
(a) strane ili
(b) domace proizvodnje?"
a b))
(if (eq ?p a)
then (assert (automobil (nov_polovan nov)(proizvodnja strana)))
else (assert (automobil (nov_polovan nov)(proizvodnja domaca)))
)
(retract ?a)
)

(defrule polovan
?a<-(automobil (nov_polovan polovan)(proizvodnja nil))
=>
(bind ?p
(pitanja "Kupovina polovnog automobila moze biti kao mac sa dve ostrice. Na jednoj strani automobil moze
biti jeftin i u dobrom stanju, a na drugoj, postoji mogucnost da auto prestane da radi iz nepoznatih razloga.

Ali, dobro. Ako ste tako resili, verovatno ste imali svojih razloga.

Da li zelite automobil
(a) strane ili
(b) domace proizvodnje."
a b))
(if (eq ?p a)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)))
else (assert (automobil (nov_polovan polovan)(proizvodnja domaca))))
(retract ?a)
)

(defrule strani_automobili
?a<-(automobil (nov_polovan ?p)(proizvodnja strana)(namena nil))
=>
(if (eq ?p polovan) then
(printout t "Kupovina stranog polovnog automobila je veoma rizican posao.
Prvo morate proveriti sve isprave, zatim da li se poklapaju brojevi motora i sasije sa onima u dozvoli i dr.
Ukoliko niste strucnjak za automobile, pri takvoj jednoj kupovini obavezno povedite strucnjaka sa sobom da
bi se uverili u ispravnost automobila." crlf))
(bind ?n
(pitanja "Kakav auto vam je potreban?
(a) Limuzina - komforniji automobil pogodan za udobnu voznju na vecim udaljenostima
(b) Klasican - automobil male kubikaze pogodan za gradsku i prigradsku voznju
(c) Sportski - manji automobil vece kubikaze za brzu voznje
(d) Karavan - jaci automobil koji moze da vam posluzi i kao sredstvo
za prevoz robe u vecim kolicinama
Unesite vas izbor a, b, c ili d. "
a b c d))
(if (eq ?n a)
then (assert (automobil (nov_polovan ?p)(proizvodnja strana)(namena limuzina))))
(if (eq ?n b)
then (assert (automobil (nov_polovan ?p)(proizvodnja strana)(namena klasican))))
(if (eq ?n c)
then (assert (automobil (nov_polovan ?p)(proizvodnja strana)(namena sportski))))
(if (eq ?n d)
then (assert (automobil (nov_polovan ?p)(proizvodnja strana)(namena karavan))))
(retract ?a)
)

(defrule domaci_automobili
?a<-(automobil (nov_polovan ?p)(proizvodnja domaca)(namena nil))
=>
(printout t "Znaci zelite da kupite polovan automobil domace proizvodnje. Ta opcija nije tako losa ako zelite
da na automobil potrosite sto manje novca." crlf)
(if (eq ?p polovan)
then (printout t "Savetovao bih vas da birate automobile koji nisu
stariji od desetak godina. Polovni jugici nisu tako losi,a i nisu toliko skupi." crlf))
(bind ?n
(pitanja "Kakav auto vam je potreban?
(a) Klasican - automobil male kubikaze pogodan za gradsku i prigradsku voznju
(b) Pick-up - automobil koji moze da vam posluzi i kao sredstvo za prevoz robe u vecim kolicinama
Unesite vas izbor a ili b. "
a b))
(if (eq ?n a)
then (assert (automobil (nov_polovan ?p)(proizvodnja domaca)(namena klasican)(marka zastava))))
(if (eq ?n b)
then (assert (automobil (nov_polovan ?p)(proizvodnja domaca)(namena pick-up)(marka zastava))))
(retract ?a)
)

(defrule nov_domaci_klasican_automobil
?a<-(automobil (nov_polovan nov)(namena klasican)(marka zastava)(cena nil))
=>
(bind ?p
(pitanja "U zastavinoj ponudi se nalaze sledeca vozila
(a) Yugo 45 sa cenom od 4000 evra
(b) Zastava 101 sa cenom od 5000 evra
(c) Yugo florida sa cenom od 6000 evra.
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b c))
(if (eq ?p a)
then (assert (automobil (nov_polovan nov)(proizvodnja domaca)(namena klasican)(marka zastava_yugo_45)(cena 4000))))
(if (eq ?p b)
then (assert (automobil (nov_polovan nov)(proizvodnja domaca)(namena klasican)(marka zastava_101)(cena 5000))))
(if (eq ?p b)
then (assert (automobil (nov_polovan nov)(proizvodnja domaca)(namena klasican)(marka zastava_yugo_florida)(cena 6000))))
(retract ?a)
)

(defrule domaci_pick-up
?a<-(automobil (nov_polovan ?p)(namena pick-up)(marka zastava)(cena nil))
=>
(if (eq ?p nov)
then (printout t "U zastavinoj ponudi se nalazi vozilo pick-up sa cenom od 6000 evra." crlf)
(assert (automobil (nov_polovan nov)(proizvodnja domaca)(namena pick-up)(marka zastava)(cena 6000)))
else (printout t "Od zastavinog asortimana predlazemo polovan pick-up sa cenom od 3000 evra." crlf)
(assert (automobil (nov_polovan polovan)(proizvodnja domaca)(namena pick-up)(marka zastava)(cena 3000))))
(retract ?a)
)

(defrule polovan_domaci_klasican_automobil
?a<-(automobil(nov_polovan polovan)(namena klasican)(marka zastava)(cena nil))
=>
(bind ?p
(pitanja "Od zastavinog asortimana u ponudi imamo:
(a) Yugo 45 sa cenom od 4000 evra
(b) Zastava 101 sa cenom od 5000 evra
(c) Yugo florida sa cenom od 6000 evra.
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b c))
(if (eq ?p a)
then (assert (automobil (nov_polovan polovan)(proizvodnja domaca)(namena klasican)(marka zastava_yugo_45)(cena 2000))))
(if (eq ?p b)
then (assert (automobil (nov_polovan polovan)(proizvodnja domaca)(namena klasican)(marka zastava_101)(cena 2500))))
(if (eq ?p b)
then (assert (automobil (nov_polovan polovan)(proizvodnja domaca)(namena klasican)(marka zastava_yugo_florida)(cena 3000))))
(retract ?a)
)

(defrule strani_limuzina
?a<-(automobil (nov_polovan ?d)(proizvodnja strana)(namena limuzina)(marka nil))
=>
(bind ?p
(pitanja "Nasa preporuka je da izaberete limuzinu neke od sledecih firmi:
(a) MERCEDES
(b) AUDI
(c) BMW
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b c))
(if (eq ?p a)
then (assert (automobil (nov_polovan ?d)(proizvodnja strana)(namena limuzina)(marka MERCEDES)))
else (if (eq ?p b)
then (assert (automobil (nov_polovan ?d)(proizvodnja strana)(namena limuzina)(marka AUDI)))
else (assert (automobil (nov_polovan ?d)(proizvodnja strana)(namena limuzina)(marka BMW)))))
(retract ?a)
)

(defrule nov_limuzina_mercedes
?a<-(automobil (nov_polovan nov)(proizvodnja strana)(namena limuzina)(marka MERCEDES)(cena nil))
=>
(bind ?p
(pitanja "Od MERCEDES-ovih novih limuzina preporucujemo jedan od sledecih:
(a) C220 sa cenom od 22 000 evra
(b) E220 sa cenom od 23 000 evra
(c) 200SL sa cenom od 40 000 evra
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b c))
(if (eq ?p a)
then (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena limuzina)(marka MERCEDES_C220)(cena 22000)))
else (if (eq ?p b)
then (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena limuzina)(marka MERCEDES_E220)(cena 23000)))
else (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena limuzina)(marka MERCEDES_200SL)(cena 40000)))))
(retract ?a)
)

(defrule nov_limuzina_audi
?a<-(automobil (nov_polovan nov)(proizvodnja strana)(namena limuzina)(marka AUDI)(cena nil))
=>
(bind ?p
(pitanja "Od AUDI-jevih novih limuzina preporucujemo jedan od sledecih:
(a) A4 sa cenom od 25 000 evra
(b) A6 sa cenom od 30 000 evra
(c) A8 sa cenom od 35 000 evra
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b c))
(if (eq ?p a)
then (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena limuzina)(marka AUDI_A4)(cena 25000)))
else (if (eq ?p b)
then (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena limuzina)(marka AUDI_A6)(cena 30000)))
else (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena limuzina)(marka AUDI_A8)(cena 35000)))))
(retract ?a)
)

(defrule nov_limuzina_bmw
?a<-(automobil (nov_polovan nov)(proizvodnja strana)(namena limuzina)(marka BMW)(cena nil))
=>
(bind ?p
(pitanja "Od BMW-ovih novih limuzina preporucujemo jedan od sledecih:
(a) 315i sa cenom od 23 000 evra
(b) 325i sa cenom od 25 000 evra
(c) 525 sa cenom od 28 000 evra
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b c))
(if (eq ?p a)
then (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena limuzina)(marka BMW_315i)(cena 23000)))
else (if (eq ?p b)
then (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena limuzina)(marka BMW_325i)(cena 25000)))
else (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena limuzina)(marka BMW_525)(cena 28000)))))
(retract ?a)
)

(defrule polovan_limuzina_mercedes
?a<-(automobil (nov_polovan polovan)(proizvodnja strana)(namena limuzina)(marka MERCEDES)(cena nil))
=>
(bind ?p
(pitanja "Od MERCEDES-ovih polovnih limuzina preporucujemo jedan od sledecih:
(a) 240D sa cenom od 4 500 evra
(b) 230TD sa cenom od 5 000 evra
(c) C220 sa cenom od 11 000 evra
(d) E220 sa cenom od 12 000 evra
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b c d))
(if (eq ?p a)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena limuzina)(marka MERCEDES_240D)(cena 4500))))
(if (eq ?p b)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena limuzina)(marka MERCEDES_230TD)(cena 5000))))
(if (eq ?p c)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena limuzina)(marka MERCEDES_C220)(cena 5000))))
(if (eq ?p d)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena limuzina)(marka MERCEDES_E220)(cena 12000))))
(retract ?a)
)

(defrule polovan_limuzina_audi
?a<-(automobil (nov_polovan polovan)(proizvodnja strana)(namena limuzina)(marka AUDI)(cena nil))
=>
(bind ?p
(pitanja "Od AUDI-jevih polovnih limuzina preporucujemo jedan od sledecih:
(a) 80 sa cenom od 4 000 evra
(b) 90 sa cenom od 4 200 evra
(c) 100 sa cenom od 4 500 evra
(d) A4 sa cenom od 13 000 evra
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b c d))
(if (eq ?p a)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena limuzina)(marka AUDI_80)(cena 4000))))
(if (eq ?p b)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena limuzina)(marka AUDI_90)(cena 4200))))
(if (eq ?p c)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena limuzina)(marka AUDI_100)(cena 4500)))
else (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena limuzina)(marka AUDI_A4)(cena 13000))))
(retract ?a)
)

(defrule polovan_limuzina_bmw
?a<-(automobil (nov_polovan polovan)(proizvodnja strana)(namena limuzina)(marka BMW)(cena nil))
=>
(bind ?p
(pitanja "Od BMW-ovih polovnih limuzina preporucujemo jedan od sledecih:
(a) 315i sa cenom od 13 000 evra
(b) 325i sa cenom od 13 500 evra
(c) 525 sa cenom od 14 000 evra
(d) 715 sa cenom od 16 000 evra
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b c d))
(if (eq ?p a)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena limuzina)(marka BMW_315i)(cena 13000))))
(if (eq ?p b)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena limuzina)(marka BMW_325i)(cena 13500))))
(if (eq ?p c)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena limuzina)(marka BMW_525)(cena 14000))))
(if (eq ?p d)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena limuzina)(marka BMW_715)(cena 16000))))
(retract ?a)
)

(defrule klasican_strani_automobil
?a<-(automobil (nov_polovan ?d)(proizvodnja strana)(namena klasican)(marka nil))
=>
(bind ?p
(pitanja "Nasa preporuka je da izaberete automobil neke od sledecih firmi:
(a) GOLF
(b) OPEL
(c) FORD
(d) FIAT
(e) PEUGEOT
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b c d e))
(if (eq ?p a)
then (assert (automobil (nov_polovan ?d)(proizvodnja strana)(namena klasican)(marka GOLF))))
(if (eq ?p b)
then (assert (automobil (nov_polovan ?d)(proizvodnja strana)(namena klasican)(marka OPEL))))
(if (eq ?p c)
then (assert (automobil (nov_polovan ?d)(proizvodnja strana)(namena klasican)(marka FORD))))
(if (eq ?p d)
then (assert (automobil (nov_polovan ?d)(proizvodnja strana)(namena klasican)(marka FIAT))))
(if (eq ?p e)
then (assert (automobil (nov_polovan ?d)(proizvodnja strana)(namena klasican)(marka PEUGEOT))))
(retract ?a)
)

(defrule nov_klasican_golf
?a<-(automobil (nov_polovan nov)(proizvodnja strana)(namena klasican)(marka GOLF)(cena nil))
=>
(bind ?p
(pitanja "Od GOLF-ovih novih automobila preporucujemo jedan od sledecih:
(a) 4 sa cenom od 18 000 evra
(b) 5 sa cenom od 23 000 evra
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b))
(if (eq ?p a)
then (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena klasican)(marka GOLF_4)(cena 18000)))
else (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena klasican)(marka GOLF_5)(cena 23000))))
(retract ?a)
)

(defrule nov_klasican_opel
?a<-(automobil (nov_polovan nov)(proizvodnja strana)(namena klasican)(marka OPEL)(cena nil))
=>
(bind ?p
(pitanja "Od OPEL-ovih novih automobila preporucujemo jedan od sledecih:
(a) VEKTRA sa cenom od 15 000 evra
(b) ASTRA sa cenom od 16 000 evra
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b))
(if (eq ?p a)
then (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena klasican)(marka OPEL_VEKTRA)(cena 15000)))
else (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena klasican)(marka OPEL_ASTRA)(cena 16000))))
(retract ?a)
)

(defrule nov_klasican_ford
?a<-(automobil (nov_polovan nov)(proizvodnja strana)(namena klasican)(marka FORD)(cena nil))
=>
(bind ?p
(pitanja "Od FORD-ovih novih automobila preporucujemo jedan od sledecih:
(a) FIESTA sa cenom od 13 000 evra
(b) FOKUS sa cenom od 17 000 evra
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b))
(if (eq ?p a)
then (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena klasican)(marka FORD_FIESTA)(cena 13000)))
else (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena klasican)(marka FORD_FOKUS)(cena 17000))))
(retract ?a)
)

(defrule nov_klasican_fiat
?a<-(automobil (nov_polovan nov)(proizvodnja strana)(namena klasican)(marka FIAT)(cena nil))
=>
(bind ?p
(pitanja "Od FIAT-ovih novih automobila preporucujemo jedan od sledecih:
(a) BRAVA sa cenom od 14 500 evra
(b) PUNTO sa cenom od 10 000 evra
(c) BRAVO sa cenom od 12 000 evra
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b c))
(if (eq ?p a)
then (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena klasican)(marka FIAT_BRAVA)(cena 14500)))
else (if (eq ?p b)
then (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena klasican)(marka FIAT_PUNTO)(cena 10000)))
else (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena klasican)(marka FIAT_BRAVO)(cena 12000)))))
(retract ?a)
)

(defrule nov_klasican_pezo
?a<-(automobil (nov_polovan nov)(proizvodnja strana)(namena klasican)(marka PEUGEOT)(cena nil))
=>
(bind ?p
(pitanja "Od PEUGEOT-ovih novih automobila preporucujemo jedan od sledecih:
(a) 206 sa cenom od 12 000 evra
(b) 306 sa cenom od 13 000 evra
(c) 207 sa cenom od 14 000 evra
(d) 307 sa cenom od 15 000 evra
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b c d))
(if (eq ?p a)
then (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena klasican)(marka PEUGEOT_206)(cena 12000))))
(if (eq ?p b)
then (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena klasican)(marka PEUGEOT_306)(cena 13000))))
(if (eq ?p c)
then (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena klasican)(marka PEUGEOT_207)(cena 14000))))
(if (eq ?p d)
then (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena klasican)(marka PEUGEOT_307)(cena 15000))))
(retract ?a)
)

(defrule polovan_klasican_golf
?a<-(automobil (nov_polovan polovan)(proizvodnja strana)(namena klasican)(marka GOLF)(cena nil))
=>
(bind ?p
(pitanja "Od GOLF-ovih polovnih automobila preporucujemo jedan od sledecih:
(a) 2 sa cenom od 3 000 evra
(b) 3 sa cenom od 4 000 evra
(c) 4 sa cenom od 5 000 evra
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b c))
(if (eq ?p a)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena klasican)(marka GOLF_2)(cena 3000)))
else (if (eq ?p b)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena klasican)(marka GOLF_3)(cena 3000)))
else (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena klasican)(marka GOLF_4)(cena 23000)))))
(retract ?a)
)

(defrule polovan_klasican_opel
?a<-(automobil (nov_polovan polovan)(proizvodnja strana)(namena klasican)(marka OPEL)(cena nil))
=>
(bind ?p
(pitanja "Od OPEL-ovih polovnih automobila preporucujemo jedan od sledecih:
(a) KADET sa cenom od 2 500 evra
(b) VEKTRA sa cenom od 7 500 evra
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b))
(if (eq ?p a)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena klasican)(marka OPEL_KADET)(cena 2500)))
else (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena klasican)(marka OPEL_VEKTRA)(cena 7500))))
(retract ?a)
)

(defrule polovan_klasican_ford
?a<-(automobil (nov_polovan polovan)(proizvodnja strana)(namena klasican)(marka FORD)(cena nil))
=>
(bind ?p
(pitanja "Od FORD-ovih polovnih automobila preporucujemo jedan od sledecih:
(a) FIESTA sa cenom od 6 500 evra
(b) FOKUS sa cenom od 8 500 evra
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b))
(if (eq ?p a)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena klasican)(marka FORD_FIESTA)(cena 2500)))
else (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena klasican)(marka FORD_FOKUS)(cena 7500))))
(retract ?a)
)

(defrule polovan_klasican_fiat
?a<-(automobil (nov_polovan polovan)(proizvodnja strana)(namena klasican)(marka FIAT)(cena nil))
=>
(bind ?p
(pitanja "Od FIAT-ovih polovnih automobila preporucujemo jedan od sledecih:
(a) BRAVA sa cenom od 7 000 evra
(b) PUNTO sa cenom od 6 000 evra
(c) BRAVO sa cenom od 6 500 evra
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b c))
(if (eq ?p a)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena klasican)(marka FIAT_BRAVA)(cena 7000)))
else (if (eq ?p b)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena klasican)(marka FIAT_BRAVA)(cena 6000)))
else (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena klasican)(marka FIAT_PUNTO)(cena 6500)))))
(retract ?a)
)

(defrule polovan_klasican_pezo
?a<-(automobil (nov_polovan polovan)(proizvodnja strana)(namena klasican)(marka PEUGEOT)(cena nil))
=>
(bind ?p
(pitanja "Od PEUGEOT-ovih polovnih automobila preporucujemo jedan od sledecih:
(a) 206 sa cenom od 6 000 evra
(b) 306 sa cenom od 8 000 evra
(c) 207 sa cenom od 7 500 evra
(d) 307 sa cenom od 8 000 evra
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b c d))
(if (eq ?p a)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena klasican)(marka PEUGEOT_206)(cena 6000))))
(if (eq ?p b)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena klasican)(marka PEUGEOT_306)(cena 8000))))
(if (eq ?p c)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena klasican)(marka PEUGEOT_207)(cena 7500))))
(if (eq ?p d)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena klasican)(marka PEUGEOT_307)(cena 8000))))
(retract ?a)
)

(defrule strani_sportski
?a<-(automobil (nov_polovan ?f)(proizvodnja strana)(namena sportski)(marka nil))
=>
(bind ?p
(pitanja "Nasa preporuka je da izaberete sportski auto neke od sledecih firmi:
(a) MERCEDES
(b) OPEL
(c) BMW
(d) PEUGEOT
(e) AUDI
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b c d e))
(if (eq ?p a)
then (assert (automobil (nov_polovan ?f)(proizvodnja strana)(namena sportski)(marka MERCEDES))))
(if (eq ?p b)
then (assert (automobil (nov_polovan ?f)(proizvodnja strana)(namena sportski)(marka OPEL))))
(if (eq ?p c)
then (assert (automobil (nov_polovan ?f)(proizvodnja strana)(namena sportski)(marka BMW))))
(if (eq ?p d)
then (assert (automobil (nov_polovan ?f)(proizvodnja strana)(namena sportski)(marka PEUGEOT))))
(if (eq ?p e)
then (assert (automobil (nov_polovan ?f)(proizvodnja strana)(namena sportski)(marka AUDI))))
(retract ?a)
)

(defrule nov_sportski_mercedes
?a<-(automobil (nov_polovan nov)(proizvodnja strana)(namena sportski)(marka MERCEDES)(cena nil))
=>
(printout t "Od MERCEDES-ovih novih sportskih automobila preporucujemo 240SL sa cenom od 23 000 evra." crlf)
(assert (automobil (nov_polovan nov)(proizvodnja strana)(namena sportski)(marka MERCEDES_240SL)(cena 23000)))
(retract ?a)
)

(defrule nov_sportski_opel
?a<-(automobil (nov_polovan nov)(proizvodnja strana)(namena sportski)(marka OPEL)(cena nil))
=>
(printout t "Od OPEL-ovih novih sportskih automobila preporucujemo TIGRA sa cenom od 15 000 evra." crlf)
(assert (automobil (nov_polovan nov)(proizvodnja strana)(namena sportski)(marka OPEL_TIGRA)(cena 15000)))
(retract ?a)
)

(defrule nov_sportski_bmw
?a<-(automobil (nov_polovan nov)(proizvodnja strana)(namena sportski)(marka BMW)(cena nil))
=>
(printout t "Od BMW-ovih novih sportskih automobila preporucujemo MR2 sa cenom od 25 000 evra." crlf)
(assert (automobil (nov_polovan nov)(proizvodnja strana)(namena sportski)(marka BMW_MR2)(cena 25000)))
(retract ?a)
)

(defrule nov_sportski_pezo
?a<-(automobil (nov_polovan nov)(proizvodnja strana)(namena sportski)(marka PEUGEOT)(cena nil))
=>
(bind ?p
(pitanja "Od PEUGEOT-ovih novih sportskih automobila preporucujemo jedan od sledecih:
(a) 106 RALLY sa cenom od 13 500 evra
(b) 206 RALLY sa cenom od 14 500 evra
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b))
(if (eq ?p a)
then (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena sportski)(marka PEUGEOT_106_RALLY)(cena 13500)))
else (assert (automobil (nov_polovan nov)(proizvodnja strana)(namena sportski)(marka PEUGEOT_206_RALLY)(cena 14500))))
(retract ?a)
)

(defrule nov_sportski_audi
?a<-(automobil (nov_polovan nov)(proizvodnja strana)(namena sportski)(marka AUDI)(cena nil))
=>
(printout t "Od AUDI-jevih novih sportskih automobila preporucujemo TT sa cenom od 20 000 evra." crlf)
(assert (automobil (nov_polovan nov)(proizvodnja strana)(namena sportski)(marka AUDI_TT)(cena 20000)))
(retract ?a)
)

(defrule polovan_sportski_mercedes
?a<-(automobil (nov_polovan polovan)(proizvodnja strana)(namena sportski)(marka MERCEDES)(cena nil))
=>
(printout t "Od MERCEDES-ovih polovnih sportskih automobila preporucujemo 240SL sa cenom od 16 000 evra." crlf)
(assert (automobil (nov_polovan nov)(proizvodnja strana)(namena sportski)(marka MERCEDES_240SL)(cena 16000)))
(retract ?a)
)

(defrule polovan_sportski_opel
?a<-(automobil (nov_polovan polovan)(proizvodnja strana)(namena sportski)(marka OPEL)(cena nil))
=>
(printout t "Od OPEL-ovih polovnih sportskih automobila preporucujemo TIGRA sa cenom od 10 000 evra." crlf)
(assert (automobil (nov_polovan nov)(proizvodnja strana)(namena sportski)(marka OPEL_TIGRA)(cena 10000)))
(retract ?a)
)

(defrule polovan_sportski_bmw
?a<-(automobil (nov_polovan polovan)(proizvodnja strana)(namena sportski)(marka BMW)(cena nil))
=>
(printout t "Od BMW-ovih polovnih sportskih automobila preporucujemo MR2 sa cenom od 18 000 evra." crlf)
(assert (automobil (nov_polovan nov)(proizvodnja strana)(namena sportski)(marka BMW_MR2)(cena 18000)))
(retract ?a)
)

(defrule polovan_sportski_pezo
?a<-(automobil (nov_polovan polovan)(proizvodnja strana)(namena sportski)(marka PEUGEOT)(cena nil))
=>
(bind ?p
(pitanja "Od PEUGEOT-ovih polovnih sportskih automobila preporucujemo jedan od sledecih:
(a) 106 RALLY sa cenom od 9 000 evra
(b) 206 RALLY sa cenom od 9 500 evra
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b))
(if (eq ?p a)
then (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena sportski)(marka PEUGEOT_106_RALLY)(cena 9000)))
else (assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena sportski)(marka PEUGEOT_206_RALLY)(cena 9500))))
(retract ?a)
)

(defrule polovan_sportski_audi
?a<-(automobil (nov_polovan polovan)(proizvodnja strana)(namena sportski)(marka AUDI)(cena nil))
=>
(printout t "Od AUDI-jevih polovnih sportskih automobila preporucujemo TT sa cenom od 15 000 evra." crlf)
(assert (automobil (nov_polovan nov)(proizvodnja strana)(namena sportski)(marka AUDI_TT)(cena 15000)))
(retract ?a)
)

(defrule strani_karavan
?a<-(automobil (nov_polovan ?f)(proizvodnja strana)(namena karavan)(marka nil))
=>
(bind ?p
(pitanja "Nasa preporuka je da izaberete karavan neke od sledecih firmi:
(a) MERCEDES
(b) OPEL
(c) BMW
(d) VOLKSWAGEN
Izaberite jedan iz ponude i ukucajte odgovarajuce slovo."
a b c d))
(if (eq ?p a)
then (assert (automobil (nov_polovan ?f)(proizvodnja strana)(namena klasican)(marka MERCEDES))))
(if (eq ?p b)
then (assert (automobil (nov_polovan ?f)(proizvodnja strana)(namena klasican)(marka OPEL))))
(if (eq ?p c)
then (assert (automobil (nov_polovan ?f)(proizvodnja strana)(namena klasican)(marka BMW))))
(if (eq ?p d)
then (assert (automobil (nov_polovan ?f)(proizvodnja strana)(namena klasican)(marka VOLKSWAGEN))))
(retract ?a)
)

(defrule nov_karavan_mercedes
?a<-(automobil (nov_polovan nov)(proizvodnja strana)(namena karavan)(marka MERCEDES)(cena nil))
=>
(printout t "Od MERCEDES-ovih novih karavana preporucujemo 240TD sa cenom od 19 000 evra." crlf)
(assert (automobil (nov_polovan nov)(proizvodnja strana)(namena karavan)(marka MERCEDES_240TD)(cena 19000)))
(retract ?a)
)

(defrule nov_karavan_opel
?a<-(automobil (nov_polovan nov)(proizvodnja strana)(namena karavan)(marka OPEL)(cena nil))
=>
(printout t "Od OPEL-ovih novih karavana preporucujemo ASTRA sa cenom od 18 000 evra." crlf)
(assert (automobil (nov_polovan nov)(proizvodnja strana)(namena karavan)(marka OPEL_ASTRA)(cena 18000)))
(retract ?a)
)

(defrule nov_karavan_bmw
?a<-(automobil (nov_polovan nov)(proizvodnja strana)(namena karavan)(marka BMW)(cena nil))
=>
(printout t "Od BMW-ovih novih karavana preporucujemo 750TD sa cenom od 26 000 evra." crlf)
(assert (automobil (nov_polovan nov)(proizvodnja strana)(namena karavan)(marka BMW_750TD)(cena 26000)))
(retract ?a)
)

(defrule nov_karavan_volkswagen
?a<-(automobil (nov_polovan nov)(proizvodnja strana)(namena karavan)(marka VOLKSWAGEN)(cena nil))
=>
(printout t "Od VOLKSWAGEN-ovih novih sportskih automobila preporucujemo PASAT sa cenom od 17 000 evra." crlf)
(assert (automobil (nov_polovan nov)(proizvodnja strana)(namena karavan)(marka VOLKSWAGEN_PASAT)(cena 17000)))
(retract ?a)
)

(defrule polovan_karavan_mercedes
?a<-(automobil (nov_polovan polovan)(proizvodnja strana)(namena karavan)(marka MERCEDES)(cena nil))
=>
(printout t "Od MERCEDES-ovih polovnih karavana preporucujemo 240TD sa cenom od 11 000 evra." crlf)
(assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena karavan)(marka MERCEDES_240TD)(cena 11000)))
(retract ?a)
)

(defrule polovan_karavan_opel
?a<-(automobil (nov_polovan polovan)(proizvodnja strana)(namena karavan)(marka OPEL)(cena nil))
=>
(printout t "Od OPEL-ovih polovnih karavana preporucujemo ASTRA sa cenom od 12 000 evra." crlf)
(assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena karavan)(marka OPEL_ASTRA)(cena 12000)))
(retract ?a)
)

(defrule polovan_karavan_bmw
?a<-(automobil (nov_polovan polovan)(proizvodnja strana)(namena karavan)(marka BMW)(cena nil))
=>
(printout t "Od BMW-ovih polovnih karavana preporucujemo 750TD sa cenom od 16 000 evra." crlf)
(assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena karavan)(marka BMW_750TD)(cena 16000)))
(retract ?a)
)

(defrule polovan_karavan_volkswagen
?a<-(automobil (nov_polovan polovan)(proizvodnja strana)(namena karavan)(marka VOLKSWAGEN)(cena nil))
=>
(printout t "Od VOLKSWAGEN-ovih polovnih sportskih automobila preporucujemo PASAT sa cenom od 13 000 evra." crlf)
(assert (automobil (nov_polovan polovan)(proizvodnja strana)(namena karavan)(marka VOLKSWAGEN_PASAT)(cena 13000)))
(retract ?a)
)

(defrule stampanje
(stampanje ?item)
=>
(printout t crlf crlf)
(printout t ?item crlf)
(printout t crlf crlf)
)

(defrule komentar
(automobil (nov_polovan ?a)(marka ?b)(namena ?c)(cena ?d&~nil))
=>
(printout t "Vas najbolji izbor je " ?a " " ?b " " ?c " od " ?d " eura." crlf)
)

unapred hvala
[ Milos911 @ 31.03.2010. 15:43 ] @
Koliko sam uspeo da vidim ti si potpuno promasila poentu postojanja ovog i slicnih foruma. Forum nije mesto gde mozes da dodjes i kazes "E treba mi to, to, i to, ko ce da mi uradi? Mene je mrzelo da pocinjem, valjda ce se naci neko koga ne mrzi". U prethodnoj temi vlaiv ti je rekao
Citat:
Ne verujem da ce iko biti toliko velikodusan da to uradi umesto tebe.
Ali ipak verujem da ce dosta ljudi pokusati da ti pomogne da to uradis sama
ukoliko navedes kakvih problema imas i sta ne razumes u zadatku.
. Sad to moze da se preformulise u:
Siguran sam da niko nece biti toliko velikodusan da to uradi umesto tebe.
A i ne verujem da ce dosta ljudi pokusati da ti pomogne da to uradis sama
cak i ako navedes kakvih problema imas i sta ne razumes u zadatku.
Jbg ljudi ne vole takav stav(bar ja znam da ne volim)...
Pozdrav, i nemoj pogresno da me shvatis.
[ vlaiv @ 01.04.2010. 08:17 ] @
Koliko ja vidim ovaj program ne radi sa bazom nego ima nekoliko "hardcoded" opcija.

Ne znam o kom programskom jeziku je rec (meni je nepoznat) ali koliko vidim
bilo kome sa malo iskustva je ovaj primer relativno jasan.

Moja preporuka je da krenes tako kao sto si predlozila

Znaci uzmes program za automobile, pokrenes ga vec nekako (pretpostavljam da je interpreter u pitanju)
i vidis rezultate

Zatim izmenis ono sto si predlozila na pocetku gde god se pojavljuje i pokrenes program opet
a zatim pratis sta se u izvrsavanju programa promenilo.

Posle toga ide sledeci algoritam:

1. "Upotrebi klikere" :D - analiziraj promenu
2. Izmeni josh nesto kako bi program bio sto vise nalik onome sto ti treba
3. Ako si zadovoljna programom to je to, ako ne vratish se na korak 1