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) ; ===========================================================================