Advertisement
JuanFelipeArango28

Untitled

Aug 14th, 2020
783
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 2.23 KB | None | 0 0
  1. (define-struct empanada (gramos-carne costo gramos-grasa))
  2. (define-struct chunchulo (gramos-carne costo-unidad unidades-compradas))
  3. (define-struct papa-rellena (gramos-carne costo))
  4. (define-struct chorizo (gramos-carne costo color))
  5.  
  6. (define empanada1 (make-empanada 58 700  60))
  7. (define chunchulo1 (make-chunchulo 90 2000  15))
  8. (define papa-rellena1 (make-papa-rellena 40 800))
  9. (define chorizo1 (make-chorizo 125 1500  'cafe-caca))
  10.  
  11. (define lista1 (cons empanada1 (cons chunchulo1 (cons papa-rellena1 (cons chorizo1 empty)))))
  12.  
  13. ;Autor: Juan Felipe Arango Guzman
  14. ;Fecha: 14/08/2020
  15. ;Contrato: descuentoempanada: listafritanga, numero  -> lista
  16. ;Proposito: Crear una lista con los desceuntos indicados
  17. ;Ejemplos:
  18. ;Definicion:
  19. (define (descuentoempanada lista num)
  20.   (cond
  21.     [(not (and (list? lista) (number? num))) (error "el primer argumento debe ser una lista y el segundo debe ser un numero")]
  22.     [(or (< num 1) (> num 99)) lista]
  23.     [(empty? lista) empty]
  24.     [(empanada? (first lista))
  25.      (cons (make-empanada
  26.             (empanada-gramos-carne (first lista))
  27.             (- (empanada-costo (first lista)) (* (/ num 100) (empanada-costo (first lista))))
  28.             (empanada-gramos-grasa (first lista)))
  29.            (descuentoempanada (rest lista) num))]
  30.    
  31.     [(chunchulo? (first lista))
  32.      (cons (make-chunchulo
  33.             (chunchulo-gramos-carne (first lista))
  34.             (- (chunchulo-costo-unidad (first lista)) (* (/ num 100) (chunchulo-costo-unidad (first lista))))
  35.             (chunchulo-unidades-compradas (first lista)))
  36.            (descuentoempanada (rest lista) num))]
  37.  
  38.     [(papa-rellena? (first lista))
  39.      (cons (make-papa-rellena
  40.             (papa-rellena-gramos-carne (first lista))
  41.             (- (papa-rellena-costo (first lista)) (* (/ num 100) (papa-rellena-costo (first lista)))))
  42.            (descuentoempanada (rest lista) num))]
  43.  
  44.     [(chorizo? (first lista))
  45.      (cons (make-chorizo
  46.             (chorizo-gramos-carne (first lista))
  47.             (- (chorizo-costo (first lista)) (* (/ num 100) (chorizo-costo (first lista))))
  48.             (chorizo-color (first lista)))
  49.            (descuentoempanada (rest lista) num))]
  50.     [else (error "No hay productos de fritanga en la lista")]
  51.     )
  52.   )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement