БД студентов - Lisp

Узнай цену своей работы

Формулировка задачи:

Создать Бд студентов: nost = Ф.И.О. nof = название факультета noch = название кафедры grid = шифр группы bd = день рождения addr = адрес tel = телефон
(defmacro add-student (base nost nof noch grid bd addr tel)
  `(let ((num (if (null ,base) 1 (+ 1 (caar ,base)))))
    (push (list num ,nost ,nof, noch, grid, bd, addr, tel) ,base)))
    
(defun show-by-noch (base n)
  (dolist (p base 'Not_found)
    (when (= (cadddr p) n) (printline (car p)) (return 'ok))))
 
(setq *base* nil)
 
(add-student *base* "Sidorov A.A." "ABC" "ZXC" "321" "01-01-1994" "Khm, Ternopilska 14" "095-555-32-32")
(add-student *base* "Sidorov A.A." "ABC" "QWE" "322" "02-02-1994" "Lviv, Banderu 44" "095-444-81-90")
(add-student *base* "Sidorov A.A." "ABC" "ZXC" "323" "03-03-1994" "Lyck, Peremogu 73" "095-354-31-99")
(show-by-noch *base* "QWE")
Вывести ФИО студентов, обучающихся на кафедре "QWE"
Выдает следующие: символ nof не имеет значения (не связан).

Решение задачи: «БД студентов»

textual
Листинг программы
(defun show-by-noch (base n)
  (dolist (p base 'Not_found)
    (when (equal (nth 3 p) n) (printline (nth 1 p)))))

Объяснение кода листинга программы

В данном коде:

  1. Создаётся функция show-by-noch с двумя аргументами base и n.
  2. В функции используется dolist, который перебирает элементы base.
  3. Если элемент p равен n, то выводится первый элемент этого элемента.
  4. Если элемент p не равен n, то ничего не происходит.

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


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

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

15   голосов , оценка 4.133 из 5