Advertisement
OnlyStiven

Untitled

Aug 9th, 2020
447
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 3.79 KB | None | 0 0
  1. ;Ejercicio Parcial numero#1
  2. ;Año y fecha del parcial: 02 de diciembre del 2019
  3. ;Profesor Evaluador: Carlos Andres Delgado
  4. ;================================================
  5.  
  6. ;==========Contrato==================
  7. ;Autor:Kahyberth Stiven Gonzalez Sayas
  8. ;fecha: 8 de agosto de 2020
  9. ;Contrato: numero numero string ---> numero
  10. ;Proposito:Calcular Salario de los trabajadores
  11. ;====================================
  12.  
  13.  
  14. ;Estructuras
  15.  
  16. (define-struct trabajador-ejecutivo (nombre numero-personas-acargo salario-base))
  17. (define-struct trabajador-administrativo (nombre salario-base))
  18. (define-struct trabajador-operativo (nombre salario-hora horas-trabajadas))
  19.  
  20. ;Trabajadores
  21. (define trabajadorA (make-trabajador-ejecutivo 'Daniel 25 100000))
  22. (define trabajadorB (make-trabajador-administrativo 'Andres 50000))
  23. (define trabajadorC (make-trabajador-operativo 'Diego 75 100))
  24.  
  25.  
  26. ;Funcion bono
  27. (define (funcion-bono dia-inicio dia-final)
  28.  
  29. (cond
  30.  
  31. [(and(>= dia-inicio 1)(< dia-inicio 10))
  32.  
  33. (cond
  34. [(and(>= dia-final 1)(< dia-final 10))(+(* 10000 dia-final(- 1 dia-final)))]
  35. [(and(>= dia-final 15)(< dia-final 25))(+ (* 10000(- 10 dia-inicio))(* 5 15000)(* 12000(- dia-final 15)))]
  36. [(and(>= dia-final 25)(<= dia-final 30))(+(* 10000(- 10 dia-inicio))(* 10 12000)(* 11000(- dia-final 25)))]
  37. [else(error "Dia no registrado")]
  38.    )
  39.  
  40.  ]
  41.                                  
  42. [(and(>= dia-inicio 10)(< dia-inicio 15))
  43.  
  44. (cond
  45.  
  46. [(and(>= dia-final 10)(< dia-final 15))(+(* 15000 dia-final)(- 10 dia-final))]
  47. [(and(>= dia-final 15)(< dia-final 25))(+ (* 15000(- 15 dia-inicio))(* 12000(- dia-final 15)))]
  48. [(and(>= dia-final 25)(<= dia-final 30))(+(* 15000(- 15 dia-inicio))(* 10 12000)(* 11000(- dia-final 25)))]
  49.  
  50.  
  51. [else(error "Dia no registrado")]
  52.   )
  53. ]
  54.                                      
  55. [(and(>= dia-inicio 15)(< dia-inicio 25))
  56.  
  57. (cond
  58.  
  59. [(and(>= dia-final 15)(< dia-final 25))(+ (* 15000(- 15 dia-final)))]
  60. [(and(>= dia-final 25)(<= dia-final 30))(+(* 15000(- 25 dia-inicio))(* 11000(- dia-final 25)))]
  61.  
  62. [else(error "Dia no registrado")]
  63.   )
  64. ]
  65.                                      
  66. [(and(>= dia-inicio 25)(<= dia-inicio 30))
  67.  
  68.  (cond
  69.    
  70. [(and(>= dia-final 25)(<= dia-final 30))(+(* 11000 dia-final)(- 25 dia-final))]
  71.  
  72. [else(error "Dia no registrado")]
  73.  
  74.    )
  75.  
  76. ]
  77.  
  78. [else(error "Datos ingresados Erroneos")]
  79.  
  80. )
  81.   )
  82.  
  83.  
  84.  
  85. ;Calcular bono ejecutivo
  86.  
  87.  
  88. (define(bono nombre)
  89.  
  90.  
  91. (cond
  92.  
  93.  
  94.  
  95.   [(> (trabajador-ejecutivo-numero-personas-acargo nombre)20)20000]
  96.  
  97.   [else(error "No tiene acceso al bono")]
  98.  
  99. )
  100.   )
  101.  
  102. ;Salario ejecutivo
  103. (define(calcular-trabajador-ejecutivo nombre)
  104.  
  105.  
  106.   (+
  107.  
  108. (trabajador-ejecutivo-salario-base nombre)
  109. (bono nombre)
  110.  
  111.    )
  112.  
  113.   )
  114.  
  115.  
  116. ;Salario Administrativo
  117. (define(calcular-trabajador-administrativo nombre)
  118.  
  119.  
  120. (trabajador-administrativo-salario-base nombre)
  121.  
  122.  
  123.   )
  124.  
  125.  
  126. ;Salario operador
  127.  
  128. (define(calcular-trabajador-operativo nombre)
  129.  
  130.  
  131. (*
  132.  
  133.  
  134. (trabajador-operativo-salario-hora nombre)
  135. (trabajador-operativo-horas-trabajadas nombre)
  136.  
  137.  
  138.  )
  139.  
  140.   )
  141.  
  142.  
  143. ;Calculo total de los trabajadores
  144. (define(Calcular-salario dia-inicio dia-final nombre)
  145.  
  146.  
  147.  (cond
  148.  
  149.  
  150.  [(trabajador-ejecutivo? nombre)
  151.  
  152.  
  153.  
  154.  
  155.   ;Total ejecutivo
  156.  
  157. (+
  158.  (funcion-bono dia-inicio dia-final)
  159.  (calcular-trabajador-ejecutivo nombre)
  160.  
  161.  )
  162.  
  163.   ]
  164.  
  165.  
  166.  [(trabajador-administrativo? nombre)
  167.  
  168.  
  169. (+
  170.  
  171.  
  172. (calcular-trabajador-administrativo nombre)
  173. (funcion-bono dia-inicio dia-final)
  174.  
  175.  )
  176.  
  177.   ]
  178.  
  179.  
  180.  
  181.  [(trabajador-operativo? nombre)
  182.  
  183.  
  184. (+
  185.  
  186.  
  187. (calcular-trabajador-operativo nombre)
  188. (funcion-bono dia-inicio dia-final)
  189.  
  190.  
  191.  )
  192.  
  193.  
  194.  
  195.  
  196.   ]
  197.  
  198.  
  199. [else(error"Datos del trabajador no encontrados")]
  200.  
  201.    )
  202.   )
  203.  
  204. ;Pruebas
  205.  
  206. (check-expect(Calcular-salario 10 28 trabajadorA)348000)
  207. (check-expect(Calcular-salario 5 15 trabajadorB)175000)
  208. (check-expect(Calcular-salario 12 24 trabajadorC)160500)
  209.  
  210.  
  211.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement