Организовать отбор данных по направлению подготовки и степени владения иностранным языком - Lisp
Формулировка задачи:
Кадровое агентство занимается поиском квалифицированных специалистов. Требования к специалисту: квалификация по диплому (ИНН, фамилия, направление подготовки по диплому, свидетельство о прохождении повышения квалификации, стаж работы по специальности, степень владения иностранным языком). Организовать отбор данных по направлению подготовки и степени владения иностранным языком.
Степени владения иностранным языком: A1 — может объясниться в простейшей бытовой ситуации; A2 — может объясниться в магазине, на вокзале, при занятии неквалифицированным трудом; B1 — уверенно общается в быту, читает и адекватно воспринимает несложные тексты, может объясниться при занятии квалифицированным трудом; B2 — читает и адекватно воспринимает сложные тексты, пишет без ошибок; C1 — владеет языком в достаточной мере для работы в должности инженера; C2 — владеет языком в достаточной мере для работы в должности юриста, журналиста.
Помогите, пожалуйста
Решение задачи: «Организовать отбор данных по направлению подготовки и степени владения иностранным языком»
textual
Листинг программы
- (defstruct head ssn name speciality cert experience fluency)
- (defun heads (n)
- (when (> n 0)
- (cons (make-head
- :ssn (read)
- :name (read)
- :speciality (read)
- :cert (read)
- :experience (read)
- :fluency (read))
- (heads (1- n)))))
- (defun names (w s f)
- (loop for a in w
- when (and (equalp (head-speciality a) s)
- (equalp (head-fluency a) f))
- collect (head-name a)))
- (defun spec-fluency-names (w) (names w (read) (read)))
- > (setf agency (heads 3))
- 111-22-3333
- Carmen
- Biochemistry
- Certificate
- 4
- A1
- 123-45-6789
- Jason
- Law
- Certificate
- 7
- C1
- 333-22-4444
- Brian
- Law
- Certificate
- 6
- C1
- (#S(HEAD :SSN |111-22-3333| :NAME CARMEN :SPESIALITY BIOCHEMISTRY
- :CERT CERTIFICATE :EXPERIENCE 4 :FLUENCY A1)
- #S(HEAD :SSN |123-45-6789| :NAME JASON :SPESIALITY LAW :CERT CERTIFICATE
- :EXPERIENCE 7 :FLUENCY C1)
- #S(HEAD :SSN |333-22-4444| :NAME BRIAN :SPESIALITY LAW :CERT CERTIFICATE
- :EXPERIENCE 6 :FLUENCY C1))
- > (spec-fluency-names agency)
- Biochemistry
- A1
- (CARMEN)
- > (spec-fluency-names agency)
- Law
- C1
- (JASON BRIAN)
Объяснение кода листинга программы
- Создание структуры данных HEAD с полями ssn, name, speciality, cert, experience, fluency.
- Функция heads используется для создания списка структур данных HEAD. Она запрашивает данные (ssn, name, speciality, cert, experience, fluency) и добавляет структуру данных HEAD в список, пока не будет введен ноль.
- Функция names используется для фильтрации структур данных HEAD на основе заданных параметров (speciality и fluency). Она собирает имена структур данных HEAD, которые соответствуют заданным параметрам.
- Функция spec-fluency-names используется для получения имен структур данных HEAD, которые соответствуют заданным параметрам (speciality и fluency).
- Пример использования функции spec-fluency-names: сначала создается список структур данных HEAD с помощью функции heads, затем используется функция spec-fluency-names для получения имен структур данных HEAD, которые соответствуют заданным параметрам (speciality и fluency).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д