Advertisement
cardel

Untitled

Jun 25th, 2019
1,019
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 1.39 KB | None | 0 0
  1. ;; Estructura usada: (define-struct producto (nombre, codigo, precio)
  2. ;;Autor: Carlos A Delgado
  3. ;;Fecha: 25 de Junio de 2019
  4. ;;Contrato: incremento-precio: producto, numero -> producto
  5. ;;Propósito: Esta función recibe un producto y un número, retorna el mismo producto pero con el campo precio sumado con el número recibido. Si el incremento es mayor que 500, se asume solo el incremento como precio.
  6. ;; Ejemplos (incremento-precio (make-producto "Gelatina" "10012" 100) 100) -> (make-producto "Gelatina" "10012" 200)
  7. ;;(incremento-precio (make-producto "Gelatina" "10012" 100) 1000) -> (make-producto "Gelatina" "10012" 1000)
  8. (define-struct producto (nombre codigo precio))
  9.  
  10. (define (incremento-precio prod inc)
  11.   (cond
  12.     [(and (producto? prod) (number? inc))
  13.      (cond
  14.        [(> inc 500)
  15.         (make-producto
  16.          (producto-nombre prod)
  17.          (producto-codigo prod)
  18.          inc)
  19.         ]
  20.        [else
  21.          (make-producto
  22.          (producto-nombre prod)
  23.          (producto-codigo prod)
  24.          (+ (producto-precio prod) inc))
  25.          ]
  26.        )
  27.      ]
  28.     [else (error "Usted debe ingresar un producto y un numero")]
  29.     )
  30. )
  31.  
  32. (check-expect (incremento-precio (make-producto "Gelatina" "10012" 100) 100) (make-producto "Gelatina" "10012" 200))
  33. (check-expect (incremento-precio (make-producto "Gelatina" "10012" 100) 1000) (make-producto "Gelatina" "10012" 1000))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement