Сравнить студентов, используя функцию COND - Lisp
Формулировка задачи:
доброе время суток
срочно нужно решить две задчаи - с лабораторной все решила кроме последних двух и голова вообще уже не варит ( буду признательная любой помощи
итого, последние две задачки:
20. Используя функцию COND, напишите функцию, которая спрашивает у пользователя ФИО двух студентов из группы (список группы составлен раньше) для которых:
а) сравнивает год рождения и выдает результат (кто старше или что они ровесники);
б) сравнивает средний бал и выдает сообщение о результатах сравнения;
с) проверяет родственные связи (если одни и те же родители, то они родственники) и выдает об этом сообщение.
люди помогите
Решение задачи: «Сравнить студентов, используя функцию COND»
textual
Листинг программы
- (defun task (fio1 fio2)
- (let ((y1 (get fio1 'god))
- (y2 (get fio2 'god))
- (b1 (get fio1 'ball))
- (b2 (get fio2 'ball))
- (m1 (get fio1 'mama))
- (m2 (get fio2 'mama))
- (p1 (get fio1 'papa))
- (p2 (get fio2 'papa)))
- (cond ((> y1 y2) (prin1 fio1) (prin1 " старше ") (prin1 fio2) (terpri))
- ((= y1 y2) (prin1 fio1) (prin1 " и ") (prin1 fio2) (prin1 " - ровесники") (terpri))
- (t (prin1 fio2) (prin2 " старше ") (prin1 fio1) (terpri)))
- (cond ((> b1 b2) (prin1 "у ") (prin1 fio1) (prin1 " средний балл выше, чем у ") (prin1 fio2) (terpri))
- ((= y1 y2) (prin1 "у ") (prin1 fio1) (prin1 " и ") (prin1 fio2) (prin1 " средние баллы равны") (terpri))
- (t (prin1 "у ") (prin1 fio2) (prin1 " средний балл выше, чем у ") (prin1 fio1) (terpri)))
- (cond ((and (eq m1 m2) (eq p1 p2)) (prin1 fio1) (prin1 " и ") (prin1 fio2) (prin1 " - родственники") (terpri))
- (t (prin1 fio1) (prin1 " и ") (prin1 fio2) (prin1 " - не родственники") (terpri)))))
- TASK
- CL-USER 24 > (task 'chernov 'urivskii)
- CHERNOV" и "URIVSKII" - ровесники"
- "у "CHERNOV" средний балл выше, чем у "URIVSKII
- CHERNOV" и "URIVSKII" - не родственники"
- NIL
Объяснение кода листинга программы
Код на языке Lisp, представленный в списке, выполняет сравнение двух студентов, используя функцию COND. Вот список, оформленный в соответствии с вашим запросом:
- (defun task (fio1 fio2) ...)
- (let ((y1 (get fio1 'god))
- (y2 (get fio2 'god))
- (b1 (get fio1 'ball))
- (b2 (get fio2 'ball))
- (m1 (get fio1 'mama))
- (m2 (get fio2 'mama))
- (p1 (get fio1 'papa))
- (p2 (get fio2 'papa)))
- (cond ((> y1 y2) (prin1 fio1) (prin1
старше
) (prin1 fio2) (terpri)) - ((= y1 y2) (prin1 fio1) (prin1
и
) (prin1 fio2) (prin1- ровесники
) (terpri)) - ((t (prin1 fio2) (prin2
старше
) (prin1 fio1) (terpri))) - (cond ((> b1 b2) (prin1
у
) (prin1 fio1) (prin1средний балл выше, чем у
) (prin1 fio2) (terpri)) - ((= y1 y2) (prin1
у
) (prin1 fio1) (prin1и
) (prin1 fio2) (prin1средние баллы равны
) (terpri)) - ((t (prin1
у
) (prin1 fio2) (prin1средний балл выше, чем у
) (prin1 fio1) (terpri))) - (cond ((and (eq m1 m2) (eq p1 p2)) (prin1 fio1) (prin1
и
) (prin1 fio2) (prin1- родственники
) (terpri)) - ((t (prin1 fio1) (prin1
и
) (prin1 fio2) (prin1- не родственники
) (terpri))) - ...)
- (task 'chernov 'urivskii)
- CHERNOV
и
URIVSKII- ровесники
у
CHERNOVсредний балл выше, чем у
URIVSKII- CHERNOV
и
URIVSKII- не родственники
- NIL Пожалуйста, обратите внимание, что переменные fio1, fio2, y1, y2, b1, b2, m1, m2, p1 и p2 используются в коде для хранения информации о студентах.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д