Advertisement
cardel

Ejemplo 3 FDP 01 de Feb

Feb 1st, 2021
3,390
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 1.76 KB | None | 0 0
  1. ; Una tienda de donas requiere una aplicación para calcular el valor
  2. ; de la venta de las donas. Esta tienda maneja 4 tipos de donas
  3. ;
  4. ; - Donas junior: Color, adicion, precio
  5. ; - Donas para la señorita: Color, azucar?, precio
  6. ; - Donas para el señor: Color, peso, precio
  7. ; - Donas para la abuelita: Color, azucar?, peso, precio
  8. ;
  9. ; Se desea calcular el precio de venta de un compra de donas, bajo
  10. ; la restricción de que siempre compra un mismo tipo de dona.
  11. ; 1. Diseño de las estructuras
  12. ; 2. Especificación de contrato.   3. Diseño de la función.
  13. ;
  14.  
  15.  
  16. (define-struct donnaJ (color adicion precio))
  17. (define-struct donnaS (color azucar? precio))
  18. (define-struct donnaH (color peso precio))
  19. (define-struct donnaA (color azucar? peso precio))
  20.  
  21. (define donnita1 (make-donnaJ 'verde 'chocolate 2000))
  22. (define donnita2 (make-donnaS 'rojo #false 3000))
  23. (define donnita3 (make-donnaH 'morado 20 5000))
  24. (define donnita4 (make-donnaA 'amarillo #true 30 4000))
  25.  
  26. ;;Autor: Carlos A Delgado
  27. ;;Fecha: 01 de Febrero de 2021
  28. ;;COntrato: calcular-venta: donna, numero -> numero
  29. ;;Propósito: Calcular el precio de venta de unas donnas
  30. ;;Ejemplos
  31. ;; donnita1  10 20000
  32. ;; donnita2  5 15000
  33. ;; donnita3 20 100000
  34. ;; donnita4 8  32000
  35. (define (calcular-venta don cnt)
  36.   (cond
  37.     [(donnaJ? don) (* (donnaJ-precio don) cnt)]
  38.     [(donnaS? don) (* (donnaS-precio don) cnt)]
  39.     [(donnaH? don) (* (donnaH-precio don) cnt)]
  40.     [(donnaA? don) (* (donnaA-precio don) cnt)]
  41.     [else (error "Debe ingresar una estructura tipo donna a la función")]
  42.     ))
  43. ;;Pruebas
  44. (check-expect (calcular-venta donnita1  10) 20000)
  45. (check-expect (calcular-venta donnita2  5) 15000)
  46. (check-expect (calcular-venta donnita3 20) 100000)
  47. (check-expect (calcular-venta donnita4 8)  32000)
  48.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement