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