2017-04-06 40 views
0

年齢の計算には関数が必要です。私はちょうどCLIPSを勉強し始めました。私は年を計算することができますが、答えは間違っています。クリップ:年齢の計算

(defrule calc-age 
(person (date-of-birth ?dob)) 
=> 
    (bind ?age (- 2017 ?dob)) 
(printout t ?age)) 

答えて

0
CLIPS> 
(deffunction age (?cy ; current year 
        ?cm ; current month 
        ?cd ; current day 
        ?by ; birth year 
        ?bm ; birth month 
        ?bd) ; birth day 
    (bind ?age (- ?cy ?by)) 
    (if (or (< ?cm ?bm) 
      (and (= ?cm ?bm) (< ?cd ?bd))) 
     then 
     (bind ?age (- ?age 1))) 
    ?age) 
CLIPS> (age 2017 4 6 2017 3 2) 
0 
CLIPS> (age 2017 4 6 2016 8 3) 
0 
CLIPS> (age 2017 4 6 2016 4 3) 
1 
CLIPS> (age 2017 4 6 2016 3 3) 
1 
CLIPS> (age 2017 4 6 2015 3 3) 
2 
CLIPS> 
+0

ありがとうございました! –

関連する問題