cardel

Ejercicio 25 de Enero

Jan 25th, 2021
555
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;.
  2. (define-struct movie (title producer))
  3. (define-struct boyfriend (name hair eyes phone))
  4. (define-struct CD (artist title price))
  5. (define-struct sweater (material size producer))
  6.  
  7. ;;Autor: Carlos A Delgado
  8. ;;Fecha: 25 de Enero de 2021
  9. ;;Contrato: cambiar-artista: simbolo, CD -> CD
  10. ;;Propósito: Esta función permite cambiar el campo artist de una estructura CD que se ingresa
  11. ;;Ejemplos
  12. ;;simbolo = 'Madonna CD = (make-CD 'Juanes 'Colombia-querida 5000) retorna: (make-CD 'Madonna 'Colombia-querida 5000)
  13. ;;simbolo = 'Shakira CD = (make-CD 'Arjona 'Mira-al-cielo 4000) retorna  (make-CD 'Shakira 'Mira-al-cielo 4000)
  14. (define (cambiar-artista cd sim)
  15.   (cond
  16.     [(and (symbol? sim) (CD? cd))
  17.      (make-CD
  18.       sim
  19.       (CD-title cd)
  20.       (CD-price cd))]
  21.     [else (error "La función debe recibir un símbolo y una estructura CD")]
  22.     ))
  23.  
  24. (define cdA (make-CD 'Juanes 'Colombia-querida 5000))
  25. (check-expect (cambiar-artista cdA 'Madonna)
  26.               (make-CD 'Madonna 'Colombia-querida 5000))
  27.  
  28. (check-expect (cambiar-artista (make-CD 'Arjona 'Mira-al-cielo 4000) 'Shakira)
  29.               (make-CD 'Shakira 'Mira-al-cielo 4000))
  30.  
  31. (check-error (cambiar-artista (make-CD 'Arjona 'Mira-al-cielo 4000) "Aterciopelados"))
  32.  
  33. (check-error (cambiar-artista "Juanes" "Aterciopelados"))
  34.  
  35. ;;Autor: Carlos A Delgado
  36. ;;Fecha: 25 de Enero de 2021
  37. ;;Contrato: mejor-sweater: sweater, sweater -> sweater
  38. ;;Descripción: Esta función permite saber cual tiene más tamaño (size) de dos estructuras sweater que ingresan
  39. ;;Ejemplos
  40. ;; sweaterA: (make-sweater 'Cuero 100 'HBO)  sweaterB: (make-sweater 'Lana 200 'TNT)
  41. ;; Retorno: (make-sweater 'Lana 200 'TNT)
  42. (define (mejor-sweater sweaterA sweaterB)
  43.   (cond
  44.     [(and (sweater? sweaterA) (sweater? sweaterB))
  45.      (cond
  46.        [(> (sweater-size sweaterA)
  47.            (sweater-size sweaterB))
  48.         sweaterA]
  49.        [else sweaterB])]
  50.     [else (error "Deben ingresar dos estructuras sweater")]
  51.     ))
  52.  
  53. (check-expect (mejor-sweater (make-sweater 'Cuero 100 'HBO)  (make-sweater 'Lana 200 'TNT))  (make-sweater 'Lana 200 'TNT))
  54. (check-error  (mejor-sweater (make-CD 'Arjona 'Mira-al-cielo 4000)  (make-sweater 'Lana 200 'TNT)))
RAW Paste Data