Сравнить студентов, используя функцию 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. Вот список, оформленный в соответствии с вашим запросом:

  1. (defun task (fio1 fio2) ...)
  2. (let ((y1 (get fio1 'god))
  3. (y2 (get fio2 'god))
  4. (b1 (get fio1 'ball))
  5. (b2 (get fio2 'ball))
  6. (m1 (get fio1 'mama))
  7. (m2 (get fio2 'mama))
  8. (p1 (get fio1 'papa))
  9. (p2 (get fio2 'papa)))
  10. (cond ((> y1 y2) (prin1 fio1) (prin1 старше) (prin1 fio2) (terpri))
  11. ((= y1 y2) (prin1 fio1) (prin1 и) (prin1 fio2) (prin1 - ровесники) (terpri))
  12. ((t (prin1 fio2) (prin2 старше) (prin1 fio1) (terpri)))
  13. (cond ((> b1 b2) (prin1 у) (prin1 fio1) (prin1 средний балл выше, чем у) (prin1 fio2) (terpri))
  14. ((= y1 y2) (prin1 у) (prin1 fio1) (prin1 и) (prin1 fio2) (prin1 средние баллы равны) (terpri))
  15. ((t (prin1 у) (prin1 fio2) (prin1 средний балл выше, чем у) (prin1 fio1) (terpri)))
  16. (cond ((and (eq m1 m2) (eq p1 p2)) (prin1 fio1) (prin1 и) (prin1 fio2) (prin1 - родственники) (terpri))
  17. ((t (prin1 fio1) (prin1 и) (prin1 fio2) (prin1 - не  родственники) (terpri)))
  18. ...)
  19. (task 'chernov 'urivskii)
  20. CHERNOVиURIVSKII- ровесники
  21. уCHERNOVсредний балл выше, чем уURIVSKII
  22. CHERNOVиURIVSKII- не  родственники
  23. NIL Пожалуйста, обратите внимание, что переменные fio1, fio2, y1, y2, b1, b2, m1, m2, p1 и p2 используются в коде для хранения информации о студентах.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.5 из 5