Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Un grupo de estudiantes tiene matriculadas 4 asignaturas
- ; las cuales tienen un nombre, número de créditos,
- ; dos notas parciales, una nota e proyecto, una nota de talleres, porcentajes. Los porcentajes
- ; varían de acuerdo a la asigunatura por item de evaluación
- ; Los porcentajes de estos elementos son fijos de acuerdo a las
- ; normativas de la siguiente manera:
- ; . Diseñe una función llamada calcular-promedio-ponderado
- ; la cualrecibe una lista con las 4 asignaturas del estudiante y retorna
- ; el promedio ponderado.
- ; Calculo I 4 creditos 4.0 Inglés I: 3 creditos. 3.8
- ; FDP 4 creditos 4.5 Sexualidad 3 créditos: 4.0
- ; ITI 2 creditos: 3.5 ISI: 2 creditos: 4
- ;
- ; Promedio semestral: 4*4 + 4.5*4 +3.5*2+3.8*3+4*3+4*2 = 72.4/18
- ; 4.02222
- (define-struct asignatura (nombre num_cred nota_p1 nota_p2 nota_tl nota_pf porcentajes))
- (define-struct porcentajes (p1 p2 tl pf))
- (define FDP (make-asignatura "FDP" 4 4.5 4.2 4 4.5 (make-porcentajes 30 30 20 20)))
- (define calculoI (make-asignatura "Cálculo I" 4 3.5 4.5 4 3.5 (make-porcentajes 40 40 10 10)))
- (define ITI (make-asignatura "ITI" 2 5 5 5 4.5 (make-porcentajes 30 30 10 30)))
- (define Ingles (make-asignatura "Inglés" 3 4.5 4.5 3.5 5 (make-porcentajes 30 35 15 20)))
- (define estudianteA
- (cons FDP
- (cons calculoI
- (cons ITI
- (cons Ingles empty)))))
- ;;Autor: Carlos A Delgado S
- ;;Fecha: 15 de Feb de 2021
- ;;Contrato: calcular-promedio-ponderado: lista de asignaturas -> numero
- ;;Propósito: Es calcular el promedio ponderado de un estudiante que ve 4 asignaduras
- ;;Ejemplos
- ;;lista de asignaturas : estudianteA
- ;;FDP 4.31 4 Creditos
- ;;Calculo 3.95 4 Creditos
- ;;ITI 4.85 2 creditos
- ;;Ingles 4.45 3 creditos
- ;;4.31*4+3.95*4+4.85*2+4.45*3 = 56.09/13 = 4.31461538
- (define (calcular-promedio-ponderado lstAsg)
- (/ (+
- (* (calcular-nota-final (first lstAsg)) (asignatura-num_cred (first lstAsg)))
- (* (calcular-nota-final (first (rest lstAsg))) (asignatura-num_cred (first (rest lstAsg))))
- (* (calcular-nota-final (first (rest (rest lstAsg)))) (asignatura-num_cred (first (rest (rest lstAsg)))))
- (* (calcular-nota-final (first (rest (rest (rest lstAsg))))) (asignatura-num_cred (first (rest (rest (rest lstAsg))))))
- )
- (calcular-total-creditos lstAsg))
- )
- (check-within (calcular-promedio-ponderado estudianteA) 4.3146 0.0001)
- ;;calcular-nota-final: asignatura -> numero
- ;;Proposito: Calcula la nota final de una asignatura
- (define (calcular-nota-final asig)
- (+
- (* (asignatura-nota_p1 asig) (/ (porcentajes-p1 (asignatura-porcentajes asig)) 100))
- (* (asignatura-nota_p2 asig) (/ (porcentajes-p2 (asignatura-porcentajes asig)) 100))
- (* (asignatura-nota_tl asig) (/ (porcentajes-tl (asignatura-porcentajes asig)) 100))
- (* (asignatura-nota_pf asig) (/ (porcentajes-pf (asignatura-porcentajes asig)) 100))
- )
- )
- (check-expect (calcular-nota-final FDP) 4.31)
- (check-expect (calcular-nota-final calculoI) 3.95)
- (check-expect (calcular-nota-final ITI) 4.85)
- (check-expect (calcular-nota-final Ingles) 4.45)
- ;;calcular-total-creditos: lista de asignaturas -> numero
- ;;Propósito: Calcula el número de creditos que ve un estudiante
- (define (calcular-total-creditos lstAsg)
- (+
- (asignatura-num_cred (first lstAsg))
- (asignatura-num_cred (first (rest lstAsg)))
- (asignatura-num_cred (first (rest (rest lstAsg))))
- (asignatura-num_cred (first (rest (rest (rest lstAsg)))))
- ))
- (check-expect (calcular-total-creditos estudianteA) 13)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement