Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;Ejercicio Parcial numero#1
- ;Año y fecha del parcial: 02 de diciembre del 2019
- ;Profesor Evaluador: Carlos Andres Delgado
- ;================================================
- ;==========Contrato==================
- ;Autor:Kahyberth Stiven Gonzalez Sayas
- ;fecha: 8 de agosto de 2020
- ;Contrato: numero numero string ---> numero
- ;Proposito:Calcular Salario de los trabajadores
- ;====================================
- ;Estructuras
- (define-struct trabajador-ejecutivo (nombre numero-personas-acargo salario-base))
- (define-struct trabajador-administrativo (nombre salario-base))
- (define-struct trabajador-operativo (nombre salario-hora horas-trabajadas))
- ;Trabajadores
- (define trabajadorA (make-trabajador-ejecutivo 'Daniel 25 100000))
- (define trabajadorB (make-trabajador-administrativo 'Andres 50000))
- (define trabajadorC (make-trabajador-operativo 'Diego 75 100))
- ;Funcion bono
- (define (funcion-bono dia-inicio dia-final)
- (cond
- [(and(>= dia-inicio 1)(< dia-inicio 10))
- (cond
- [(and(>= dia-final 1)(< dia-final 10))(+(* 10000 dia-final(- 1 dia-final)))]
- [(and(>= dia-final 15)(< dia-final 25))(+ (* 10000(- 10 dia-inicio))(* 5 15000)(* 12000(- dia-final 15)))]
- [(and(>= dia-final 25)(<= dia-final 30))(+(* 10000(- 10 dia-inicio))(* 10 12000)(* 11000(- dia-final 25)))]
- [else(error "Dia no registrado")]
- )
- ]
- [(and(>= dia-inicio 10)(< dia-inicio 15))
- (cond
- [(and(>= dia-final 10)(< dia-final 15))(+(* 15000 dia-final)(- 10 dia-final))]
- [(and(>= dia-final 15)(< dia-final 25))(+ (* 15000(- 15 dia-inicio))(* 12000(- dia-final 15)))]
- [(and(>= dia-final 25)(<= dia-final 30))(+(* 15000(- 15 dia-inicio))(* 10 12000)(* 11000(- dia-final 25)))]
- [else(error "Dia no registrado")]
- )
- ]
- [(and(>= dia-inicio 15)(< dia-inicio 25))
- (cond
- [(and(>= dia-final 15)(< dia-final 25))(+ (* 15000(- 15 dia-final)))]
- [(and(>= dia-final 25)(<= dia-final 30))(+(* 15000(- 25 dia-inicio))(* 11000(- dia-final 25)))]
- [else(error "Dia no registrado")]
- )
- ]
- [(and(>= dia-inicio 25)(<= dia-inicio 30))
- (cond
- [(and(>= dia-final 25)(<= dia-final 30))(+(* 11000 dia-final)(- 25 dia-final))]
- [else(error "Dia no registrado")]
- )
- ]
- [else(error "Datos ingresados Erroneos")]
- )
- )
- ;Calcular bono ejecutivo
- (define(bono nombre)
- (cond
- [(> (trabajador-ejecutivo-numero-personas-acargo nombre)20)20000]
- [else(error "No tiene acceso al bono")]
- )
- )
- ;Salario ejecutivo
- (define(calcular-trabajador-ejecutivo nombre)
- (+
- (trabajador-ejecutivo-salario-base nombre)
- (bono nombre)
- )
- )
- ;Salario Administrativo
- (define(calcular-trabajador-administrativo nombre)
- (trabajador-administrativo-salario-base nombre)
- )
- ;Salario operador
- (define(calcular-trabajador-operativo nombre)
- (*
- (trabajador-operativo-salario-hora nombre)
- (trabajador-operativo-horas-trabajadas nombre)
- )
- )
- ;Calculo total de los trabajadores
- (define(Calcular-salario dia-inicio dia-final nombre)
- (cond
- [(trabajador-ejecutivo? nombre)
- ;Total ejecutivo
- (+
- (funcion-bono dia-inicio dia-final)
- (calcular-trabajador-ejecutivo nombre)
- )
- ]
- [(trabajador-administrativo? nombre)
- (+
- (calcular-trabajador-administrativo nombre)
- (funcion-bono dia-inicio dia-final)
- )
- ]
- [(trabajador-operativo? nombre)
- (+
- (calcular-trabajador-operativo nombre)
- (funcion-bono dia-inicio dia-final)
- )
- ]
- [else(error"Datos del trabajador no encontrados")]
- )
- )
- ;Pruebas
- (check-expect(Calcular-salario 10 28 trabajadorA)348000)
- (check-expect(Calcular-salario 5 15 trabajadorB)175000)
- (check-expect(Calcular-salario 12 24 trabajadorC)160500)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement