Ejemplo mal

Anuncio
Para la función de intersección hemos utilizado un mapcar que nos recorra una de las
listas de entrada, y por cada elemento en la lista, ejecutamos otro mapcar que nos
compare con cada elemento de la segunda lista. En caso de que el elemento se encuentre
entre ambas listas, calculamos la nota media y lo insertamos en la lista final.
Para la función de unión primero generamos la lista intersección, y luego con cada una
de las listas de entrada vamos viendo si sus elementos se encuentran en la intersección.
En caso de no encontrarlos, los insertamos en la lista de intersección, obteniendo asi la
lista final.
(defun alumnos-interseccion(cjto-a cjto-b)
(setf inter nil)
(mapcar #' (lambda (x) (mapcar #' (lambda (y) (cond ((= (second x)
(second y)) (setf inter (cons x inter))
(setf (third (car inter)) (/ (+ (third x) (third y)) 2)))
(t
0)))
b))cjto-a))
cjto-
(defun alumnos-union (cjto-a cjto-b)
(alumnos-interseccion cjto-a cjto-b)
(setf unir (copy-tree inter))
(mapcar #' (lambda (x) (setf flag 0)
(mapcar #' (lambda (y) (cond ((= (second x)
(second y)) (setf flag 1))
(t 0))) inter)
(cond ((= flag 0) (setf unir (cons x unir)))
(t 0)))cjto-a)
(mapcar #' (lambda (x) (setf flag 0)
(mapcar #' (lambda (y) (cond ((= (second x)
(second y)) (setf flag 1))
(t 0))) inter)
(cond ((= flag 0) (setf unir (cons x unir)))
(t 0)))cjto-b))
Ejercicio 8
Dada una lista de alumnos y un número de expediente se nos pide clasificar el alumno al
que corresponda dicho número de expediente según su nota media comno matricula de
honor, sobresaliente, notable, suficiente o insuficiente. Recorremos la lista de entrada
hasta encontrar el alumno cuyo número de expediente nos han dado. Luego con la
ayuda de la función cond le asignamos la nota verbal que le corresponda, y utilizando la
funciones list y setf de forma combinada obtenemos el formato pedido.
(defun alumnos-clasifica-nota (expediente lista)
(setf listafinal expediente)
(mapcar #'(lambda (x)
(if (= (second x) expediente)
(cond
((<
(third
x)
5)
(setf
listafinal
'INSUFICIENTE listafinal)))
((and (>= (third x) 5) (< (third x) 7))
listafinal (list 'SUFICIENTE listafinal)))
((and (>= (third x) 7) (< (third x) 9))
listafinal (list 'NOTABLE listafinal)))
(list
(setf
(setf
Descargar