БД студентов - 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)))))
Объяснение кода листинга программы
В данном коде:
- Создаётся функция
show-by-noch
с двумя аргументамиbase
иn
. - В функции используется
dolist
, который перебирает элементыbase
. - Если элемент
p
равенn
, то выводится первый элемент этого элемента. - Если элемент
p
не равенn
, то ничего не происходит.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д