Advertisement
cardel

FDP 15 de Feb 2

Feb 15th, 2021
3,034
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 5.67 KB | None | 0 0
  1. ; Una tienda de dulces maneja un inventario con sus 4 productos,
  2. ; donde cada uno tiene un código (num), un nombre, un precio,
  3. ; una cantidad y unos impuestos, los cuales son IVA; impuestos
  4. ; al consumo.  El dueño de la tienda le ha solicitado haga un programa
  5. ; el cual recibe una lista la cual representa el inventario y desea conoce
  6. ; el detalle de la siguiente manera: el total del inventario, el total de
  7. ; productos que tiene, el total de IVA que tienen sus productos y
  8. ; el total de impuesto a consumo..
  9.  
  10.  
  11. (define-struct producto (codigo nombre precio cantidad impuestos))
  12. (define-struct impuestos (iva consumo))
  13. (define-struct inventario (precio cantidad totalIVA totalConsumo))
  14.  
  15. (define turron (make-producto 2345 "turron" 200 10 (make-impuestos 19 10)))
  16. (define panelitas (make-producto 3450 "panelitas" 100 3 (make-impuestos 10 10)))
  17. (define barrilete (make-producto 7550 "barrilete" 300 5 (make-impuestos 0 15)))
  18. (define bombombum (make-producto 5550 "bombombum" 300 8 (make-impuestos 15 5)))
  19.  
  20. (define lista-prod
  21.   (cons turron
  22.         (cons panelitas
  23.               (cons barrilete
  24.                     (cons bombombum empty)))))
  25.  
  26. (define productoA (make-producto 1 "Panela" 100 10 (make-impuestos 10 5)))
  27. (define productoB (make-producto 2 "Azucar" 200 20 (make-impuestos 19 0)))
  28. (define productoC (make-producto 3 "Café" 500 100 (make-impuestos 19 0)))
  29. (define productoD (make-producto 4 "Harina" 1000 50 (make-impuestos 19 20)))
  30.  
  31. (define lista-productosB
  32.   (cons productoA (cons productoB (cons productoC (cons productoD empty)))))
  33.  
  34. ;;Autor: Carlos A Delgado S
  35. ;;Fecha: 15 de Febrero de 2021
  36. ;;Contrato: calcular-inventario: lista de productos -> inventario
  37. ;;Propósito: A partir de una lista de productos generar una información de inventario
  38. ;;Ejemplos
  39. ;;productoA: precio: 100 cnt:10 IVA:10% csm: 5%
  40. ;;productoB: precio: 200 cnt:20 IVA:19% csm: 0%
  41. ;;productoC: precio: 500 cnt:100 IVA: 19% csm: 0%
  42. ;;productoD: precio :1000 cnt: 50 IVA: 19% csm: 20%
  43. ;;inventario
  44. ;;total: 105000
  45. ;;cantidad: 180
  46. ;;IVA: 19860
  47. ;;Consumo: 10050
  48. (define (calcular-inventario lstProd)
  49.   (make-inventario
  50.    (calcular-total lstProd)
  51.    (calcular-cantidad lstProd)
  52.    (calcular-iva lstProd)
  53.    (calcular-consumo lstProd))
  54.   )
  55. ;;Pruebas
  56. (check-expect (calcular-inventario lista-prod) (make-inventario 6200 26 770 575))
  57. (check-expect (calcular-inventario lista-productosB) (make-inventario 105000 180 19860 10050))
  58. ;;Si desea una lista como salida
  59. (define (calcular-inventario-lista lstProd)
  60.   (cons
  61.     (calcular-total lstProd)
  62.     (cons
  63.      (calcular-cantidad lstProd)
  64.      (cons
  65.       (calcular-iva lstProd)
  66.       (cons
  67.        (calcular-consumo lstProd) empty)))))  
  68.  
  69. (check-expect (calcular-inventario-lista lista-prod) (cons 6200 (cons 26 (cons 770 (cons 575 empty)))))
  70. (check-expect (calcular-inventario-lista lista-productosB) (cons 105000 (cons 180 (cons 19860 (cons 10050 empty)))))
  71.  
  72. ;;contrato: calcular-total: lista de productos -> numero
  73. (define (calcular-total lstProd)
  74.   (+
  75.    (* (producto-precio (first lstProd)) (producto-cantidad (first lstProd)))
  76.    (* (producto-precio (first (rest lstProd))) (producto-cantidad (first (rest lstProd))))
  77.    (* (producto-precio (first (rest (rest lstProd)))) (producto-cantidad (first (rest (rest lstProd)))))
  78.    (* (producto-precio (first (rest (rest (rest lstProd))))) (producto-cantidad (first (rest (rest (rest lstProd))))))
  79.    ))
  80.  
  81. (check-expect (calcular-total lista-prod) 6200)
  82. (check-expect (calcular-total lista-productosB) 105000)
  83.  
  84. ;;contrato: calcular-cantidad: lista-productos -> numero
  85.  
  86. (define (calcular-cantidad lstProd)
  87.   (+
  88.    (producto-cantidad (first lstProd))
  89.    (producto-cantidad (first (rest lstProd)))
  90.    (producto-cantidad (first (rest (rest lstProd))))
  91.    (producto-cantidad (first (rest (rest (rest lstProd)))))
  92.  ))
  93.  
  94. (check-expect (calcular-cantidad lista-prod) 26)
  95. (check-expect (calcular-cantidad lista-productosB) 180)
  96.  
  97. ;;contrato: calcular-IVA: lista de productos -> numero
  98. (define (calcular-iva lstProd)
  99.   (+
  100.    (* (producto-precio (first lstProd)) (producto-cantidad (first lstProd)) (/ (impuestos-iva (producto-impuestos (first lstProd))) 100))
  101.    (* (producto-precio (first (rest lstProd))) (producto-cantidad (first (rest lstProd))) (/ (impuestos-iva (producto-impuestos (first (rest lstProd)))) 100))
  102.    (* (producto-precio (first (rest (rest lstProd)))) (producto-cantidad (first (rest (rest lstProd)))) (/ (impuestos-iva (producto-impuestos (first (rest (rest lstProd))))) 100))
  103.    (* (producto-precio (first (rest (rest (rest lstProd))))) (producto-cantidad (first (rest (rest (rest lstProd))))) (/ (impuestos-iva (producto-impuestos (first (rest (rest (rest lstProd)))))) 100))
  104.    ))
  105.  
  106. (check-expect (calcular-iva lista-prod) 770)
  107. (check-expect (calcular-iva lista-productosB) 19860)
  108.  
  109. ;;contrato: calcular-consumo: lista de productos -> numero
  110. (define (calcular-consumo lstProd)
  111.   (+
  112.    (* (producto-precio (first lstProd)) (producto-cantidad (first lstProd)) (/ (impuestos-consumo (producto-impuestos (first lstProd))) 100))
  113.    (* (producto-precio (first (rest lstProd))) (producto-cantidad (first (rest lstProd))) (/ (impuestos-consumo (producto-impuestos (first (rest lstProd)))) 100))
  114.    (* (producto-precio (first (rest (rest lstProd)))) (producto-cantidad (first (rest (rest lstProd)))) (/ (impuestos-consumo (producto-impuestos (first (rest (rest lstProd))))) 100))
  115.    (* (producto-precio (first (rest (rest (rest lstProd))))) (producto-cantidad (first (rest (rest (rest lstProd))))) (/ (impuestos-consumo (producto-impuestos (first (rest (rest (rest lstProd)))))) 100))
  116.    ))
  117.  
  118. (check-expect (calcular-consumo lista-prod) 575)
  119. (check-expect (calcular-consumo lista-productosB) 10050)
  120.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement