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
![]() |
| 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)
; ===========================================================================
