Имеется список студентов группы - Lisp
Формулировка задачи:
Имеется список студентов группы, в котором указаны фамилия студента, дата рождения, пол, рост и вес. Определить фамилию самого высокого юноши и средний рост студентов мужского пола.
Решение задачи: «Имеется список студентов группы»
textual
Листинг программы
- INSOMNIA> (defclass human ()
- ((surname :accessor surname
- :initarg :surname
- :initform (error "Фамилия: признак должен присутствовать обязательно"))
- (birth :accessor birth
- :initarg :birth)
- (gender :accessor gender
- :initarg :gender
- :initform (error "Пол: признак должен присутствовать обязательно"))
- (height :accessor height
- :initarg :height
- :initform (error "Рост: признак должен присутствовать обязательно"))
- (weight :accessor weight
- :initarg :weight)))
- #<STANDARD-CLASS HUMAN>
- INSOMNIA> (defun get-max-height (lst)
- (loop
- with mh = 0
- with surname
- for human in lst
- for height = (height human)
- if (> height mh) do (setf surname (surname human))
- finally (return surname)))
- GET-MAX-HEIGHT
- INSOMNIA> (defun get-average (lst)
- (let ((length (length
- (remove-if
- #'(lambda (x) (eql (gender x) 'f)) lst))))
- (/
- (reduce #'+ lst
- :key #'(lambda (x)
- (if (eql (gender x) 'm)
- (height x) 0)))
- length)))
- GET-AVERAGE
- INSOMNIA> (defparameter w '((ivanov 92 m 180 80) (petrova 92 f 160 60) (petrov 92 m 190 90)))
- W
- INSOMNIA> (defparameter classes
- (loop
- for data in w collect
- (destructuring-bind (surname birth gender height weight)
- data
- (make-instance
- 'human
- :surname surname
- :birth birth
- :gender gender
- :height height
- :weight weight))))
- CLASSES
Объяснение кода листинга программы
- Создание класса
human
с атрибутами: фамилия, год рождения, пол, рост, вес. - Создание функции
get-max-height
, которая находит максимальную высоту среди людей в списке. - Создание функции
get-average
, которая вычисляет средний рост людей в списке, учитывая только мужчин. - Создание переменной
w
с списком людей: Иванов (92, м, 180, 80), Петрова (92, ж, 160, 60), Петров (92, м, 190, 90). - Создание переменной
classes
, которая содержит список объектов классаhuman
, созданных из спискаw
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д