Advertisement
cardel

FDP 1 15 de Feb

Feb 15th, 2021
2,677
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 3.52 KB | None | 0 0
  1. ; Un grupo de estudiantes tiene matriculadas 4 asignaturas
  2. ; las cuales tienen un nombre, número de créditos,
  3. ; dos notas parciales, una nota e proyecto, una nota de talleres, porcentajes. Los porcentajes
  4. ; varían de acuerdo a la asigunatura por item de evaluación
  5. ; Los porcentajes de estos elementos son fijos de acuerdo a las
  6. ; normativas de la siguiente manera:
  7. ; . Diseñe una función llamada calcular-promedio-ponderado
  8. ; la cualrecibe una lista con las 4 asignaturas del estudiante y retorna
  9. ; el promedio ponderado.
  10. ; Calculo I 4 creditos 4.0   Inglés I: 3 creditos. 3.8
  11. ; FDP 4 creditos 4.5         Sexualidad 3 créditos: 4.0
  12. ; ITI 2 creditos: 3.5           ISI: 2 creditos: 4
  13. ;
  14. ; Promedio semestral: 4*4 + 4.5*4 +3.5*2+3.8*3+4*3+4*2 = 72.4/18
  15. ; 4.02222
  16.  
  17.  
  18. (define-struct asignatura (nombre num_cred nota_p1 nota_p2 nota_tl nota_pf porcentajes))
  19.  
  20. (define-struct porcentajes (p1 p2 tl pf))
  21.  
  22. (define FDP (make-asignatura "FDP" 4 4.5 4.2 4 4.5 (make-porcentajes 30 30 20 20)))
  23. (define calculoI (make-asignatura "Cálculo I" 4 3.5 4.5 4 3.5 (make-porcentajes 40 40 10 10)))
  24. (define ITI (make-asignatura "ITI" 2 5 5 5 4.5 (make-porcentajes 30 30 10 30)))
  25. (define Ingles (make-asignatura "Inglés" 3 4.5 4.5 3.5 5 (make-porcentajes 30 35 15 20)))
  26.  
  27. (define estudianteA
  28.   (cons FDP
  29.         (cons calculoI
  30.               (cons ITI
  31.                     (cons Ingles empty)))))
  32.  
  33.  
  34. ;;Autor: Carlos A Delgado S
  35. ;;Fecha: 15 de Feb de 2021
  36. ;;Contrato: calcular-promedio-ponderado: lista de asignaturas -> numero
  37. ;;Propósito: Es calcular el promedio ponderado de un estudiante que ve 4 asignaduras
  38. ;;Ejemplos
  39. ;;lista de asignaturas : estudianteA
  40. ;;FDP 4.31 4 Creditos
  41. ;;Calculo 3.95 4 Creditos
  42. ;;ITI 4.85 2 creditos
  43. ;;Ingles 4.45 3 creditos
  44. ;;4.31*4+3.95*4+4.85*2+4.45*3 = 56.09/13 = 4.31461538
  45. (define (calcular-promedio-ponderado lstAsg)
  46.   (/ (+
  47.       (* (calcular-nota-final (first lstAsg)) (asignatura-num_cred (first lstAsg)))
  48.       (* (calcular-nota-final (first (rest lstAsg))) (asignatura-num_cred (first (rest lstAsg))))
  49.       (* (calcular-nota-final (first (rest (rest lstAsg)))) (asignatura-num_cred (first (rest (rest lstAsg)))))
  50.       (* (calcular-nota-final (first (rest (rest (rest lstAsg))))) (asignatura-num_cred (first (rest (rest (rest lstAsg))))))
  51.       )
  52.      (calcular-total-creditos lstAsg))
  53.   )
  54.  
  55. (check-within (calcular-promedio-ponderado estudianteA) 4.3146 0.0001)
  56.  
  57. ;;calcular-nota-final: asignatura -> numero
  58. ;;Proposito: Calcula la nota final de una asignatura
  59. (define (calcular-nota-final asig)
  60.   (+
  61.    (* (asignatura-nota_p1 asig) (/ (porcentajes-p1 (asignatura-porcentajes asig)) 100))
  62.    (* (asignatura-nota_p2 asig) (/ (porcentajes-p2 (asignatura-porcentajes asig)) 100))
  63.    (* (asignatura-nota_tl asig) (/ (porcentajes-tl (asignatura-porcentajes asig)) 100))
  64.    (* (asignatura-nota_pf asig) (/ (porcentajes-pf (asignatura-porcentajes asig)) 100))
  65.    )
  66.   )
  67.  
  68. (check-expect (calcular-nota-final FDP) 4.31)
  69. (check-expect (calcular-nota-final calculoI) 3.95)
  70. (check-expect (calcular-nota-final ITI) 4.85)
  71. (check-expect (calcular-nota-final Ingles) 4.45)
  72.  
  73. ;;calcular-total-creditos: lista de asignaturas -> numero
  74. ;;Propósito: Calcula el número de creditos que ve un estudiante
  75. (define (calcular-total-creditos lstAsg)
  76.   (+
  77.    (asignatura-num_cred (first lstAsg))
  78.    (asignatura-num_cred (first (rest lstAsg)))
  79.    (asignatura-num_cred (first (rest (rest lstAsg))))
  80.    (asignatura-num_cred (first (rest (rest (rest lstAsg)))))
  81.    ))
  82.  
  83. (check-expect (calcular-total-creditos estudianteA) 13)
  84.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement