cardel

Ejemplo2 25 de Enero

Jan 25th, 2021
594
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;.
  2. (define-struct avion (aceleracion velmax rango))
  3.  
  4. (define-struct rango-avion (alcance-minimo alcance-maximo precision))
  5.  
  6. (define avionA (make-avion 100 2000 (make-rango-avion 10 100 50)))
  7. (define avionB (make-avion 200 2000 (make-rango-avion 20 200 10)))
  8. (define avionC (make-avion 100 4000 (make-rango-avion 10 150 30)))
  9.  
  10. ;;Extraer los datos
  11. (avion-aceleracion avionA)
  12. (avion-aceleracion avionB)
  13. (avion-aceleracion avionC)
  14.  
  15. (avion-velmax avionA)
  16. (avion-velmax avionB)
  17. (avion-velmax avionC)
  18.  
  19. (avion-rango avionA)
  20. (avion-rango avionB)
  21. (avion-rango avionC)
  22.  
  23. ;(define-struct rango-avion (alcance-minimo alcance-maximo precision))
  24. (rango-avion-alcance-minimo (avion-rango avionA))
  25. (rango-avion-alcance-minimo (avion-rango avionB))
  26. (rango-avion-alcance-minimo (avion-rango avionC))
  27.  
  28. (rango-avion-alcance-maximo (avion-rango avionA))
  29. (rango-avion-alcance-maximo (avion-rango avionB))
  30. (rango-avion-alcance-maximo (avion-rango avionC))
  31.  
  32. (rango-avion-precision (avion-rango avionA))
  33. (rango-avion-precision (avion-rango avionB))
  34. (rango-avion-precision (avion-rango avionC))
  35.  
  36. ;;Desarollar una función que reciba dos aviones y nos retorne que el que tenga más precisión
  37.  
  38. ;;pensar:
  39. ;(define avionA (make-avion 100 2000 (make-rango-avion 10 100 50)))
  40. ;(define avionB (make-avion 200 2000 (make-rango-avion 20 200 10)))
  41. ;(define avionC (make-avion 100 4000 (make-rango-avion 10 150 30)))
  42.  
  43.  
  44.  
  45. ;;Autor: Carlos A Delgado
  46. ;;Fecha: 25-Enero-2021
  47. ;;Contrato: avion-mas-preciso: avion,avion -> avion
  48. ;;Propósito: Esta función permite determinar de dos aviones cual es el más preciso
  49. ;;;Ejemplos
  50. ;Si comparo avionA y avionB ¿Cual es el más preciso? avionA
  51. ;Si comparo avionA y avionC ¿Cual es el más preciso? avionA
  52. ;Si comparo avionB y avionC ¿Cual es el más preciso? avionC
  53. (define (avion-mas-preciso avionx aviony)
  54.   (cond
  55.     [(and (avion? avionx)
  56.           (avion? aviony))
  57.      (if (>
  58.           (rango-avion-precision (avion-rango avionx))
  59.           (rango-avion-precision (avion-rango aviony)))
  60.           avionx
  61.           aviony
  62.           )]
  63.     [else (error "Las dos entradas deben ser estructuras tipo avion")]
  64.     )
  65.   )
  66.  
  67. (check-expect (avion-mas-preciso avionA avionB) avionA)
  68. (check-expect (avion-mas-preciso avionA avionC) avionA)
  69. (check-expect (avion-mas-preciso avionB avionC) avionC)
  70. (check-error (avion-mas-preciso avionA "hola"))
RAW Paste Data