Advertisement
cardel

Ejercicio3 25 de Enero

Jan 25th, 2021
3,145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 2.22 KB | None | 0 0
  1. ;.
  2.  
  3. (define-struct profesor (nombre edad curso1 curso2 curso3))
  4. (define-struct curso (nombre semestre num-estudiantes))
  5.  
  6.  
  7. ;;Promedio de estudiantes
  8.  
  9. (define profesorA (make-profesor 'Juan 30 (make-curso 'Calculo 1 100)
  10.                                  (make-curso 'FDP 1 50)
  11.                                  (make-curso 'ITI 1 55)))
  12.  
  13. (define profesorB (make-profesor 'Ana 45 (make-curso 'Español 2 30)
  14.                                  (make-curso 'CalculoII 2 50)
  15.                                  (make-curso 'Sexualidad 3 25)))
  16.  
  17. ;;Si presupongo por el promedio de estudiantes
  18. ;;ProfesorA (100+50+55)/3 68.3
  19. ;;ProfesorB (30+50+25)/3  35
  20.  
  21. ;;Autor: Carlos A Delgado
  22. ;;Fecha: 25 de Enero de 2021
  23. ;;Contrato: calcular-promedio-estudiantes: profesor -> numero
  24. ;;EJemplos
  25. ;;ProfesorA 68.3333
  26. ;;ProfesorB 35
  27. (define (calcular-promedio-estudiantes prof)
  28.   (cond
  29.     [(not (profesor? prof)) (error "Debe ingresar un profesor")]
  30.     [else
  31.      (/
  32.       (+
  33.        (curso-num-estudiantes (profesor-curso1 prof))
  34.        (curso-num-estudiantes (profesor-curso2 prof))
  35.        (curso-num-estudiantes (profesor-curso3 prof))
  36.        )
  37.       3)]))
  38.  
  39. (check-within (calcular-promedio-estudiantes profesorA) 68.3 0.1)
  40. (check-within (calcular-promedio-estudiantes profesorB) 35 0)
  41.  
  42.  
  43. ;;Obtener profesor con más estudiantes
  44. ;;Ejemplo
  45. ;;profesorA y profesorB, respuesta profesorA
  46.  
  47. ;;Autor: Carlos A Delgado
  48. ;;Fecha: 25 de Enero de 2021
  49. ;;Contrato: profesor-mas-estudiantes: profesor, profesor -> profesor
  50. ;;Ejemplos
  51. ;;ProfesorA (205 estudiantes) y el profesorB (105) , respuesta profesorA
  52. ;;Codigo
  53. (define (profesor-mas-estudiantes profA profB)
  54.   (cond
  55.     [(not (and (profesor? profA) (profesor? profB))) (error "Ambas entradas deben ser estructuras profesor")]
  56.     [(> (suma-estudiantes profA) (suma-estudiantes profB)) profA]
  57.     [else profB]
  58.     ))
  59.  
  60. ;;contrato: suma-estudiantes: profesor -> numero
  61. (define (suma-estudiantes profx)
  62.   (+
  63.    (curso-num-estudiantes (profesor-curso1 profx))
  64.    (curso-num-estudiantes (profesor-curso2 profx))
  65.    (curso-num-estudiantes (profesor-curso3 profx))
  66.    ))
  67.  
  68. (check-expect (profesor-mas-estudiantes profesorA profesorB) profesorA)
  69. (check-error (profesor-mas-estudiantes profesorA 50))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement