Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > Clips


Автор: MrDmitry 25.2.2017, 14:55
Создать базу фактов о студентах, каждый факт должен содержать Фамилию, название дисциплины, оценку. Найти количество дисциплин с оценкой 2 для студента с фамилией которого задается пользоваталем с клавиатуры. Defact применять минимум 2 раза чтоб в базе были не только студенты.

Вот как я сделал

Код

(deffacts Students
(Students Nikitin Matematika 4 )
(Students Timerbaev Informatika 5 )
(Students Lasarev Russkiy 2)
(Students Baigasin Ruskiy 5)
(Students Farshatov Physic 3)
(Students Stepanov Matematika 3)
(Students Tasetdinov Informatika 4)
(Students Lasarev Chimia 2)
(Students Kusnecov Chimia 4)
(Students Prochorov Physic 4 )
(Students Hairullin Matematika 3))

(defglobal ?*count* = 0)

(defrule input
(initial-fact)
    =>
    (printout t crlf "Vvedite familiu studenta:")
    (bind ?i (read))
    (assert (familia ?i)))

(defrule matematika
(familia ?i)
(Students ?i Matematika 2)
=>
(bind ?*count* (+ ?*count* 1)))
(defrule informatika
(familia ?i)
(Students ?i Informatika 2)
=>
(bind ?*count* (+ ?*count* 1)))
(defrule russkiy
(familia ?i)
(Students ?i Russkiy 2)
=>
(bind ?*count* (+ ?*count* 1)))
(defrule physic
(familia ?i)
(Students ?i Physic 2)
=>
(bind ?*count* (+ ?*count* 1)))
(defrule chimia
(familia ?i)
(Students ?i Chimia 2)
=>
(bind ?*count* (+ ?*count* 1)))
(defrule result
(familia ?i)
    =>
    (printout t "kolichestvo disciplin s ocenkoy 2 dlia  studenda: " ?i " = " ?*count* crlf)
    (reset)
    (halt))

    теперь хотелось бы сделать какую то проверку на то существует введеный студент или нет. Но я в упор не понимаю как это сделать. Буду рад любой помощи.





Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)