Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (define-struct empanada (gramos-carne costo gramos-grasa))
- (define-struct chunchulo (gramos-carne costo-unidad unidades-compradas))
- (define-struct papa-rellena (gramos-carne costo))
- (define-struct chorizo (gramos-carne costo color))
- (define empanada1 (make-empanada 58 700 60))
- (define chunchulo1 (make-chunchulo 90 2000 15))
- (define papa-rellena1 (make-papa-rellena 40 800))
- (define chorizo1 (make-chorizo 125 1500 'cafe-caca))
- (define lista1 (cons empanada1 (cons chunchulo1 (cons papa-rellena1 (cons chorizo1 empty)))))
- ;Autor: Juan Felipe Arango Guzman
- ;Fecha: 14/08/2020
- ;Contrato: descuentoempanada: listafritanga, numero -> lista
- ;Proposito: Crear una lista con los desceuntos indicados
- ;Ejemplos:
- ;Definicion:
- (define (descuentoempanada lista num)
- (cond
- [(not (and (list? lista) (number? num))) (error "el primer argumento debe ser una lista y el segundo debe ser un numero")]
- [(or (< num 1) (> num 99)) lista]
- [(empty? lista) empty]
- [(empanada? (first lista))
- (cons (make-empanada
- (empanada-gramos-carne (first lista))
- (- (empanada-costo (first lista)) (* (/ num 100) (empanada-costo (first lista))))
- (empanada-gramos-grasa (first lista)))
- (descuentoempanada (rest lista) num))]
- [(chunchulo? (first lista))
- (cons (make-chunchulo
- (chunchulo-gramos-carne (first lista))
- (- (chunchulo-costo-unidad (first lista)) (* (/ num 100) (chunchulo-costo-unidad (first lista))))
- (chunchulo-unidades-compradas (first lista)))
- (descuentoempanada (rest lista) num))]
- [(papa-rellena? (first lista))
- (cons (make-papa-rellena
- (papa-rellena-gramos-carne (first lista))
- (- (papa-rellena-costo (first lista)) (* (/ num 100) (papa-rellena-costo (first lista)))))
- (descuentoempanada (rest lista) num))]
- [(chorizo? (first lista))
- (cons (make-chorizo
- (chorizo-gramos-carne (first lista))
- (- (chorizo-costo (first lista)) (* (/ num 100) (chorizo-costo (first lista))))
- (chorizo-color (first lista)))
- (descuentoempanada (rest lista) num))]
- [else (error "No hay productos de fritanga en la lista")]
- )
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement