Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2ргр.doc
Скачиваний:
3
Добавлен:
27.10.2018
Размер:
111.1 Кб
Скачать

Приложение с

Листинг задачи №3

(progn

(defclass Helikopt ()

((vid:initform 'air)))

(defclass Udar(Helikopt)

((Shema :initform 'Klassic :accessor get_Shema)

(Ekipag:initform ‘dva :accessor get_Ekipag)

(Gryz:initform ‘dva : accessor get_Gryz)

(Skorost:initform ‘trista : accesor get_Skorost)

))

(defclass AntiTank(Helikopt)

((Shema :initform 'soosn :accessor get_Shema)

(Ekipag:initform ‘dva :accessor get_Ekipag)

(Gryz:initform ‘desyat : accessor get_Gryz)

(Skorost:initform ‘chetirestapiyatdes : accesor get_Skorost)

))

(defclass Transp(Helikopt)

((Shema :initform 'Klassic :accessor get_Shema)

(Ekipag:initform ‘tri :accessor get_Ekipag)

(Gryz:initform ‘vosem : accessor get_Gryz)

(Skorost:initform ‘dvesi : accesor get_Skorost)

))

(setq Mi_24 (make-instance 'Udar))

(setq Mi_8 (make-instance 'Udar))

(setq K_50 (make-instance 'AntiTank))

(setq K_52 (make-instance 'AntiTank))

(setq Mi_6 (make-instance 'Transp))

(setq Mi_10 (make-instance 'Transp))

(defun equip(board)

(cond

((equal board ' Mi_24) (get_Shema Mi_24))

((equal board 'Mi_8) (get_Ekipag Mi_8))

((equal board 'K_50) (get_Gryz K_50))

((equal board 'K_52) (get_Skorost K_52))

((equal board 'Mi_6) (get_Shema Mi_6))

((equal board 'Mi_10) (get_Ekipag Mi_10))

)

)

(defun car-letter(x) (car(coerce(string x) 'list)))

(defun cdr-name(x) (intern(coerce(cdr(coerce(string x) 'list)) 'string)))

(defun match(p d)

(cond

((and (null p)(null d))t)

((or (null p)(null d))nil)

((or(equal (car p) '?)(equal(car p)(car d)))(match (cdr p)(cdr d)))

((eq(car p)'$)(cond ((match(cdr p)d)t)((match p(cdr d))t)))

((and (atom(car p))(eq(car-letter (car p))#\?)(match (cdr p)(cdr d)))(set (cdr-name(car p))(car d)) t)))

(defun zapros(fact)

(cond

((equal fact '())(princ "The End"))

((match '(Kakie bivaut vertoleti ?R)fact)(vid R))

(t (princ "Wrong question")())

))

)

> (zapros '(Kakie bivaut vertoleti))

Udar AntiTank Nransp

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]