Списки свойств атомов - Lisp
Формулировка задачи:
Для реализации записей использовать списки свойств атомов. Составить программу определения "качества" успеваемости, т.е. процент студентов, сдавших все экзамены на 5 и 4.
Решение задачи: «Списки свойств атомов»
textual
Листинг программы
- ;; создание студента
- (defun crea-student (id fio val)
- (putprop id 'fio fio)
- (putprop id 'val val))
- ==> crea-student
- (crea-student 'st-1 'Ivanov 4)
- ==> st-1
- (proplist 'st-1)
- ==> (fio Ivanov val 4)
- ;; создание списка студентов
- (defun crea-list (lst)
- (let ((r nil))
- (dolist (i lst r)
- (let ((id (gensym 'id)))
- (crea-student id (car i) (cadr i))
- (push id r)))))
- ==> crea-list
- (setq *students* (crea-list '((Ivanov 5) (Petrov 4) (Sidorov 3))))
- ==> (id6 id5 id4)
- ;; Создана глобальная переменная *students*
- ;; средний балл списка
- (defun avg (lst)
- (let ((n (length lst))
- (s 0))
- (dolist (a lst (/ s n))
- (setq s (+ s (getProp a 'val))))))
- ==> avg
- (avg *students*)
- ==> 4
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д