Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;**Estructura: la estructura lleva dentro de si misma un valor adicional llamado "aRetirar" que es el monto de lo que va a retirar el cliente, -->NO LEER: las recursivas tiene conflictos con funciones auxiliares que requieren de dos o mas variables, usar una y solo una variable estructura si se necesita.
- (define-struct cbank (id Ncuenta Tcuenta nTrans limit credito dinerototal aRetirar))
- ;**Funcion Auxiliar: Retiro nomina
- (define (R-Nomina Persona)
- (cond
- [(cbank? Persona)
- (if (and (>= (cbank-aRetirar Persona) 0)
- (> (cbank-dinerototal Persona) (cbank-aRetirar Persona)))
- (make-cbank (cbank-id Persona)
- (cbank-Ncuenta Persona)
- (cbank-Tcuenta Persona)
- (+ (cbank-nTrans Persona) 1)
- (cbank-limit Persona)
- (cbank-credito Persona)
- (- (cbank-dinerototal Persona) (cbank-aRetirar Persona))
- (cbank-aRetirar Persona))
- "No transaccion")]
- [else "No transaccion"]))
- ;**Funcion Aunxiliar: Retiro ahorros
- (define (R-Ahorros Persona)
- (cond
- [(cbank? Persona)
- (if (>= (- (cbank-dinerototal Persona) (cbank-aRetirar Persona)) 20000)
- (make-cbank (cbank-id Persona)
- (cbank-Ncuenta Persona)
- (cbank-Tcuenta Persona)
- (cbank-nTrans Persona)
- (cbank-limit Persona)
- (cbank-credito Persona)
- (- (cbank-dinerototal Persona)
- (cbank-aRetirar Persona))
- (cbank-aRetirar Persona))
- "Supera el limite de retiro")]
- [else "No transaccion"]))
- ;**Funcion Auxiliar: Retiro credito, enrealidad suma al credito
- (define (R-Credito Persona)
- (cond
- [(< (cbank-aRetirar Persona) (cbank-limit Persona))
- (make-cbank (cbank-id Persona)
- (cbank-Ncuenta Persona)
- (cbank-Tcuenta Persona)
- (cbank-nTrans Persona)
- (cbank-limit Persona)
- (+ (cbank-aRetirar Persona)
- (cbank-credito Persona))
- (cbank-dinerototal Persona)
- (cbank-aRetirar Persona))]
- [else "No transaccion"]))
- ;*****----> Funcion principal <----*****
- (define (BancoRetiro ListaPersonas)
- (cond
- [(empty? ListaPersonas) empty] ;Recordar que "empty" (sin comillas) es un operador de listas.
- [(symbol=? 'Nomina (cbank-Tcuenta (first ListaPersonas)))
- (cons (R-Nomina (first ListaPersonas))
- (BancoRetiro (rest ListaPersonas)))]
- [(symbol=? 'Ahorros (cbank-Tcuenta (first ListaPersonas)))
- (cons (R-Ahorros (first ListaPersonas))
- (BancoRetiro (rest ListaPersonas)))]
- [(symbol=? 'Credito (cbank-Tcuenta (first ListaPersonas)))
- (cons (R-Credito (first ListaPersonas))
- (BancoRetiro (rest ListaPersonas)))]
- [else "error"]))
- (define 17abril2013 (list (make-cbank "Carla Marroquin" 1999 'Nomina 0 0 0 100000 232)
- (make-cbank "Juan Paniagua" 2564 'Ahorros 0 0 0 100000 80000)
- (make-cbank "Esnaider Chichipua" 9501 'Credito 0 100000 500000 100000 232)
- (make-cbank "Jenry Valenverg" 1001 'Nomina 0 25000 0 100000 232)))
- ;Prueba
- (BancoRetiro 17abril2013);--->
- ;(cons (make-cbank "Carla Marroquin" 1999 'Nomina 1 0 0 99768 232)
- ; (cons (make-cbank "Juan Paniagua" 2564 'Ahorros 0 0 0 20000 80000)
- ; (cons (make-cbank "Esnaider Chichipua" 9501 'Credito 0 100000 500232 100000 232)
- ; (cons (make-cbank "Jenry Valenverg" 1001 'Nomina 1 25000 0 99768 232) empty))))
Advertisement
Add Comment
Please, Sign In to add comment