Имеется список студентов группы - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д