Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Una tienda de dulces maneja un inventario con sus 4 productos,
- ; donde cada uno tiene un código (num), un nombre, un precio,
- ; una cantidad y unos impuestos, los cuales son IVA; impuestos
- ; al consumo. El dueño de la tienda le ha solicitado haga un programa
- ; el cual recibe una lista la cual representa el inventario y desea conoce
- ; el detalle de la siguiente manera: el total del inventario, el total de
- ; productos que tiene, el total de IVA que tienen sus productos y
- ; el total de impuesto a consumo..
- (define-struct producto (codigo nombre precio cantidad impuestos))
- (define-struct impuestos (iva consumo))
- (define-struct inventario (precio cantidad totalIVA totalConsumo))
- (define turron (make-producto 2345 "turron" 200 10 (make-impuestos 19 10)))
- (define panelitas (make-producto 3450 "panelitas" 100 3 (make-impuestos 10 10)))
- (define barrilete (make-producto 7550 "barrilete" 300 5 (make-impuestos 0 15)))
- (define bombombum (make-producto 5550 "bombombum" 300 8 (make-impuestos 15 5)))
- (define lista-prod
- (cons turron
- (cons panelitas
- (cons barrilete
- (cons bombombum empty)))))
- (define productoA (make-producto 1 "Panela" 100 10 (make-impuestos 10 5)))
- (define productoB (make-producto 2 "Azucar" 200 20 (make-impuestos 19 0)))
- (define productoC (make-producto 3 "Café" 500 100 (make-impuestos 19 0)))
- (define productoD (make-producto 4 "Harina" 1000 50 (make-impuestos 19 20)))
- (define lista-productosB
- (cons productoA (cons productoB (cons productoC (cons productoD empty)))))
- ;;Autor: Carlos A Delgado S
- ;;Fecha: 15 de Febrero de 2021
- ;;Contrato: calcular-inventario: lista de productos -> inventario
- ;;Propósito: A partir de una lista de productos generar una información de inventario
- ;;Ejemplos
- ;;productoA: precio: 100 cnt:10 IVA:10% csm: 5%
- ;;productoB: precio: 200 cnt:20 IVA:19% csm: 0%
- ;;productoC: precio: 500 cnt:100 IVA: 19% csm: 0%
- ;;productoD: precio :1000 cnt: 50 IVA: 19% csm: 20%
- ;;inventario
- ;;total: 105000
- ;;cantidad: 180
- ;;IVA: 19860
- ;;Consumo: 10050
- (define (calcular-inventario lstProd)
- (make-inventario
- (calcular-total lstProd)
- (calcular-cantidad lstProd)
- (calcular-iva lstProd)
- (calcular-consumo lstProd))
- )
- ;;Pruebas
- (check-expect (calcular-inventario lista-prod) (make-inventario 6200 26 770 575))
- (check-expect (calcular-inventario lista-productosB) (make-inventario 105000 180 19860 10050))
- ;;Si desea una lista como salida
- (define (calcular-inventario-lista lstProd)
- (cons
- (calcular-total lstProd)
- (cons
- (calcular-cantidad lstProd)
- (cons
- (calcular-iva lstProd)
- (cons
- (calcular-consumo lstProd) empty)))))
- (check-expect (calcular-inventario-lista lista-prod) (cons 6200 (cons 26 (cons 770 (cons 575 empty)))))
- (check-expect (calcular-inventario-lista lista-productosB) (cons 105000 (cons 180 (cons 19860 (cons 10050 empty)))))
- ;;contrato: calcular-total: lista de productos -> numero
- (define (calcular-total lstProd)
- (+
- (* (producto-precio (first lstProd)) (producto-cantidad (first lstProd)))
- (* (producto-precio (first (rest lstProd))) (producto-cantidad (first (rest lstProd))))
- (* (producto-precio (first (rest (rest lstProd)))) (producto-cantidad (first (rest (rest lstProd)))))
- (* (producto-precio (first (rest (rest (rest lstProd))))) (producto-cantidad (first (rest (rest (rest lstProd))))))
- ))
- (check-expect (calcular-total lista-prod) 6200)
- (check-expect (calcular-total lista-productosB) 105000)
- ;;contrato: calcular-cantidad: lista-productos -> numero
- (define (calcular-cantidad lstProd)
- (+
- (producto-cantidad (first lstProd))
- (producto-cantidad (first (rest lstProd)))
- (producto-cantidad (first (rest (rest lstProd))))
- (producto-cantidad (first (rest (rest (rest lstProd)))))
- ))
- (check-expect (calcular-cantidad lista-prod) 26)
- (check-expect (calcular-cantidad lista-productosB) 180)
- ;;contrato: calcular-IVA: lista de productos -> numero
- (define (calcular-iva lstProd)
- (+
- (* (producto-precio (first lstProd)) (producto-cantidad (first lstProd)) (/ (impuestos-iva (producto-impuestos (first lstProd))) 100))
- (* (producto-precio (first (rest lstProd))) (producto-cantidad (first (rest lstProd))) (/ (impuestos-iva (producto-impuestos (first (rest lstProd)))) 100))
- (* (producto-precio (first (rest (rest lstProd)))) (producto-cantidad (first (rest (rest lstProd)))) (/ (impuestos-iva (producto-impuestos (first (rest (rest lstProd))))) 100))
- (* (producto-precio (first (rest (rest (rest lstProd))))) (producto-cantidad (first (rest (rest (rest lstProd))))) (/ (impuestos-iva (producto-impuestos (first (rest (rest (rest lstProd)))))) 100))
- ))
- (check-expect (calcular-iva lista-prod) 770)
- (check-expect (calcular-iva lista-productosB) 19860)
- ;;contrato: calcular-consumo: lista de productos -> numero
- (define (calcular-consumo lstProd)
- (+
- (* (producto-precio (first lstProd)) (producto-cantidad (first lstProd)) (/ (impuestos-consumo (producto-impuestos (first lstProd))) 100))
- (* (producto-precio (first (rest lstProd))) (producto-cantidad (first (rest lstProd))) (/ (impuestos-consumo (producto-impuestos (first (rest lstProd)))) 100))
- (* (producto-precio (first (rest (rest lstProd)))) (producto-cantidad (first (rest (rest lstProd)))) (/ (impuestos-consumo (producto-impuestos (first (rest (rest lstProd))))) 100))
- (* (producto-precio (first (rest (rest (rest lstProd))))) (producto-cantidad (first (rest (rest (rest lstProd))))) (/ (impuestos-consumo (producto-impuestos (first (rest (rest (rest lstProd)))))) 100))
- ))
- (check-expect (calcular-consumo lista-prod) 575)
- (check-expect (calcular-consumo lista-productosB) 10050)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement