cardel

FDP Ejercicio

Jan 20th, 2021
1,173
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;.
  2.  
  3. ;;1. Definir la estructura
  4. (define-struct datos-persona
  5.   (nombre apellido email telefono))
  6.  
  7. (define datosPersonaA
  8.   (make-datos-persona "Ana" "Fernandez" "ana@gmail.com" 123456))
  9.  
  10. (define datosPersonaB
  11.    (make-datos-persona "Juan" "Caicedo" "juan@gmail.com" 23132))
  12.  
  13. ;;¿Que pasa si cambia el nombre de ana a Maria ¿Como queda la estructura?
  14. ;;(make-datos-persona "Maria"  "Fernandez" "ana@gmail.com" 123456)
  15.  
  16. ;;¿Que pasa si cambio el correo juan@gmail.com a juan@hotmail.com
  17. ;;(make-datos-persona "Juan" "Caicedo" "juan@hotmail.com" 23132)
  18.  
  19. ;;¿Que pasa si cambio el apellido de ana a 'DelaSpriella
  20. ;; (make-datos-persona "Ana" 'DelaSpriella "ana@gmail.com" 123456)
  21.  
  22.  
  23. ;;Autor: Carlos A Delgado
  24. ;;Fecha: 20 de Enero de 2020
  25. ;;Contrato: cambiar-datos: numero, datos-persona, simbolo -> datos-persona
  26. ;;Propósito: Esta función permite cambiar los datos de datos-persona de acuerdo a la entrega numerica y a un simbolo que se ingresa
  27. ;;Ejemplos
  28. ;; numero = 1, simbolo = 'Maria, datosP = datosPersonaA
  29. ;; El retorno  (make-datos-persona 'Maria  "Fernandez" "ana@gmail.com" 123456)
  30. ;; numero = 2, simbolo = 'Duque datos = datosPersonaB
  31. ;; El retorno es(make-datos-persona "Juan" 'Duque "juan@gmail.com" 23132)
  32. ;; numero = 3, simbolo = 'pepito@gmail.com, datosP = datosPersonaB
  33. ;; El retorno (make-datos-persona "Juan" "Caicedo" 'pepito@gmail.com 23132)
  34. (define (cambiar-datos num p1 sym)
  35.   (cond
  36.     [(= num 1)
  37.      (make-datos-persona
  38.       sym
  39.       (datos-persona-apellido p1)
  40.       (datos-persona-email p1)
  41.       (datos-persona-telefono p1))]
  42.     [(= num 2)
  43.      (make-datos-persona
  44.       (datos-persona-nombre p1)
  45.       sym      
  46.       (datos-persona-email p1)
  47.       (datos-persona-telefono p1))]    
  48.     [(= num 3)
  49.      (make-datos-persona
  50.       (datos-persona-nombre p1)
  51.       (datos-persona-apellido p1)      
  52.       sym
  53.       (datos-persona-telefono p1))]
  54.     [else (error "Opción no encontrada")
  55.           ])
  56.   )
  57.  
  58. ;;Pruebas
  59. (check-expect (cambiar-datos 1 datosPersonaA 'Maria) (make-datos-persona 'Maria  "Fernandez" "ana@gmail.com" 123456))
  60. (check-expect (cambiar-datos 2 datosPersonaB 'Duque) (make-datos-persona "Juan" 'Duque "juan@gmail.com" 23132))
  61. (check-expect (cambiar-datos 3 datosPersonaB 'pepito@gmail.com)  (make-datos-persona "Juan" "Caicedo" 'pepito@gmail.com 23132))
  62. (check-error (cambiar-datos 4 datosPersonaA 'Pepito))
RAW Paste Data