Registro de clientes en empresa [Scheme / DrRacket]

Enunciado: Una empresa tiene el registro de los clientes que atiende con los siguientes datos:
Documento de identidad, nombre, sexo, edad, peso (kilo gramos), estatura (metros) y Ultima compra, en donde los datos de última compra tiene valor de comprado y fecha.

Teniendo en cuenta estos datos, la empresa necesita un programa que genere la siguiente información:

a. Crear 4 clientes con sus respectivos datos
b. Mostrar la fecha de última compra  de un cliente
c. Mostrar el valor de última compra de un cliente
d. Ingresar tres clientes y determinar cuál de ellos compro mas
e. Validar  si dos estructuras clientes son iguales


Scheme-drracket-registrode-clientes-en-empresa
Toma de pantalla de codigo en scheme parcial resuelto


Ejercicio resuelto: 

; ===========================================================================
;estructura cliente Sobre la que trabajaremos el "uc" es el selector con el cual
;llamaremos a la estructura "compra"
(define-struct cliente (id nombre sexo edad peso estatura uc))
(define-struct compra (valor fecha))

;punto A (cada cliente se le ponen los datos que se piden y con el make-compra se llama la estructura compra)
(define cliente1 (make-cliente 01 'isaac 'M 20 57 180 (make-compra 50000 2015)))
(define cliente2 (make-cliente 02 'juan  'M 25 80 180 (make-compra 40000 2014)))
(define cliente3 (make-cliente 03 'maria 'F 18 50 160 (make-compra 30000 2015)))
(define cliente4 (make-cliente 01 'isaac 'M 20 57 180 (make-compra 50000 2015)))

;punto B (en este punto el c es una estructura cliente de los cuales definimos atras)
(define (FechaCom c)
  (compra-fecha (cliente-uc c)))
;prueba para el punto B con el cliente1 
(FechaCom cliente1)

;punto C (en este punto el c es una estructura cliente de los cuales definimos atras)
;el orden es importante aqui tomamos el selector "compra-valor luego en un parentesis
;llamamos la estructura cliente-uc con el cliente "c")
(define (ValorCom c)
  (compra-valor (cliente-uc c)))
;prueba para el punto C
(ValorCom cliente1)

;punto D
;funcion auxiliar para calcular el valor de compra mas alto entre 3 clientes haciendo uso de la funcion del punto C 
(define (aux c1 c2 c3)
  (max (ValorCom c1)
       (ValorCom c2)
       (ValorCom c3)))

(define (puntoD c1 c2 c3)
  (cond
    [(= (aux c1 c2 c3) (ValorCom c1)) c1]
    [(= (aux c1 c2 c3) (ValorCom c2)) c2]
    [(= (aux c1 c2 c3) (ValorCom c3)) c3]
    [else "datos invalidos"]
    ))
;prueba del punto D
(puntoD cliente1 cliente2 cliente3)

;punto E
;comentario: en este punto hay que tener cuidado al comparar dos estructuras puesto que 
;hay que ver si cada estructura es de tipo symbol o number en caso de que sean caracteres
;se coloca el symbol=? y en caso de que sean nuero se pone el =
(define (puntoE c1 c2)
  (cond
    
    [(not (and (cliente? c1) (cliente? c2))) "dato invalido"]
    [(and (= (cliente-id c1) (cliente-id c2))
          (symbol=? (cliente-nombre c1) (cliente-nombre c2))
          (symbol=? (cliente-sexo c1) (cliente-sexo c2))
          (= (cliente-edad c1) (cliente-edad c2))
          (= (cliente-peso c1) (cliente-peso c2))
          (= (cliente-estatura c1) (cliente-estatura c2))
          (= (compra-valor (cliente-uc c1)) (compra-valor (cliente-uc c2)))
          (= (compra-fecha (cliente-uc c1)) (compra-fecha (cliente-uc c2)))
 ) "son iguales"]
    [else "no son iguales"]))
;prueba del punto E
(puntoE  cliente1 cliente4)
; ===========================================================================
Compartir en facebook twitter Google tumblr pinterest

Entradas similares

0 Comentarios