Advertisement
cardel

Untitled

Jun 18th, 2019
1,004
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 1.87 KB | None | 0 0
  1. (define-struct datos-persona
  2.   (nombre apellido email))
  3.  
  4. ;;Se va diseñar una función que tome una estructura datos persona, un número y un símbolo
  5. ;;Si el numero es 1 se cambia el nombre de la persona
  6. ;;Si el numero es 2 se cambia el apellido
  7. ;;En otro caso se cambia el email
  8.  
  9. ;;Autor: Carlos A Delgado
  10. ;;Fecha: 18 de Junio de 2019
  11. ;;Contrato: actualizar-persona: datos-persona, numero, simbolo -> datos-persona
  12. ;;Descripción: Esta función permite actualizar los campos de un datos-persona
  13. ;;Ejemplos
  14. ;;(define personaA (make-datos-persona 'Pedro 'Perez 'pedro@pedro.com))
  15. ;;(define personaB (make-datos-persona 'Andres 'Sanchez 'andres@andres.com))
  16. ;;(actualizar-persona personaA 1 'Niño)
  17. ;;(make-datos-persona 'Niño 'Perez 'pedro@pedro.com)
  18. ;;(actualizar-persona personaB 2 'Delgado)
  19. ;;(make-datos-persona 'Andres 'Delgado 'andres@andres.com)
  20. ;;(actualizar-persona personaA 3 'pedro@perez.com)
  21. ;;(make-datos-persona 'Pedro 'Perez 'pedro@perez.com)
  22. (define (actualizar-persona per num sym)
  23.   (cond
  24.     [(= num 1)
  25.      (make-datos-persona
  26.       sym
  27.       (datos-persona-apellido per)
  28.       (datos-persona-email per)
  29.       )]
  30.     [(= num 2)
  31.      (make-datos-persona
  32.       (datos-persona-nombre per)
  33.       sym
  34.       (datos-persona-email per))]
  35.      [else
  36.       (make-datos-persona
  37.        (datos-persona-nombre per)
  38.        (datos-persona-apellido per)
  39.        sym)]
  40.      )
  41.   )
  42.  
  43. ;;Pruebas
  44.  
  45. (define personaA (make-datos-persona 'Pedro 'Perez 'pedro@pedro.com))
  46. (define personaB (make-datos-persona 'Andres 'Sanchez 'andres@andres.com))
  47. (check-expect (actualizar-persona personaA 1 'Niño) (make-datos-persona 'Niño 'Perez 'pedro@pedro.com))
  48. (check-expect(actualizar-persona personaB 2 'Delgado) (make-datos-persona 'Andres 'Delgado 'andres@andres.com))
  49. (check-expect(actualizar-persona personaA 3 'pedro@perez.com)(make-datos-persona 'Pedro 'Perez 'pedro@perez.com))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement