Está en la página 1de 2

UNIVERSIDAD AUTÓNOMA DE OCCIDENTE

FACULTAD DE INGENIERÍA ESTRUCTURAS DE DATOS


GRUPO __
DEPARTAMENTO DE OPERACIONES Y SISTEMAS Y ALGORITMOS 1
CODIGO: NOMBRE:
Valoración

SEGUNDA EVALUACIÓN PARCIAL FECHA: 9-Abril-2019

PRIMERA PARTE Recursividad [3.2 Puntos]. Justifique su respuesta. PUNTAJE

1. (Valor: 1.0) Dado el siguiente método recursivo, con 0 <= n < v.length:

1 public double metodoRec( double[ ] v, int n ) { // 0 <= n < v.length


2 double auxi ;
3 if( n == 0 )
4 return v[ n ] ;
5 else {
6 auxi = metodoRec( v, n - 1 ) ;
7 if( v[ n ] > auxi )
8 return v[ n ] ;
9 else
10 return auxi ;
11 }
12 }

A). (Valor 0.7). Calcule el Tiempo de ejecución T(n).

B). (Valor 0.3). Otro método cuyo T(n) es O(Log(n)), ¿es más rápido que este? Justifique su respuesta.

2. (Valor: 1.0) Siendo n un número entero no negativo, una función recursiva ( ) se define así:

+ % 10, ≥ 10.
( )= 10
, < 10.

A). (Valor 0.4). Implemente esta función recursiva en la siguiente plantilla de método

public int f( int n ) { /* ?????? */ }

B). (Valor 0.6). Si ( ) es una división entera y % 10 es el residuo de la división entera entre 10, use la
definición recursiva y determine el valor de f( 8753 ).

3. (Valor: 1.2) En el siguiente método, f( n ) es un método recursivo que retorna n, donde n es un valor entero positivo.

public void sumar() {


1 int suma = 0 ;
2 for( int i = 0; i < f( n ); i ++ )
3 suma += i ;
}

Además, el método recursivo f( n ) tiene un tiempo de ejecución dado por:


, =
( )= #$ #% & ! $ '$ ( (% .
+ !, >

Obtenga: (A) (Valor 0.8) El tiempo de ejecución T(n) del método void sumar() y (B) (Valor 0.4) El orden de complejidad
O( T(n) ).

SEGUNDA PARTE Breve implementación de un caso [0.6 Puntos]. PUNTAJE

4. Una empresa requiere sumar un subsidio de transporte de $ 100 000 a los salarios de los trabajadores que devenguen
hasta dos salarios mensuales mínimos legales vigentes (suponga que SMMLV = $ 828 116). Suponga que existe una
clase Trabajador que tiene los métodos double getSalario() y void setSalario( double salario ) para consultar y
modificar el salario, respectivamente. Como se observa en la signatura del siguiente método, La colección trabajadores
tiene elementos de la clase Trabajador. Implemente en Java el cuerpo de este método, para resolver el requerimiento de
la empresa.

public void sumarSubsidios( ArrayList<Trabajador> trabajadores ) { … }

TERCERA PARTE Diseño UML [1.2 Puntos]. PUNTAJE

5. Una empresa requiere el DISEÑO EN UML de un aplicativo para gestionar los salarios de sus trabajadores. De cada
trabajador se registra el número del documento de identidad (ID), el salario mensual nominal (smn) y sus apellidos y
nombres. A principio de año, la empresa debe aplicar un aumento salarial del 7 % a todos los trabajadores. Sin embargo,
si después del aumento el salario es menor que dos salarios mínimos, entonces se le suma $ 115 000 de un subsidio de
transporte. Suponga que el salario mensual mínimo legal vigente (SMMLV) está en $ 828 116. El aplicativo debe
permitir:
(a) Usar una búsqueda binaria para ubicar un trabajador por el número de su ID. Si lo encuentra, debe mostrar todos sus
datos. En caso contrario, debe informar que la búsqueda fracasó.
(b) Eliminar un trabajador por el número de su ID. Usar una búsqueda binaria para localizar al trabajador que va a
eliminar. Si no lo encuentra, debe informar que la eliminación fracasó.
(c) Usar un Quick Sort para ordenar los Trabajadores por sus números del ID, del menor al mayor.
(d) Aplicar los aumentos salariales a todos los Trabajadores.
(e) Después de aplicar los aumentos salariales, determinar y mostrar el mayor salario.
(f) Después de aplicar los aumentos salariales, determinar y mostrar los datos de los Trabajadores con salario igual al
mayor salario.

Las clases del modelo utilitario deben incluir atributos, constructor y todos los métodos adicionales que se consideren
necesarios. Para Setters, Getters y toString, escribir solo <<Getters>>, <<Setters>> y <<toString>> en su diagrama
UML de clases. En el diseño la empresa tiene un NIT (Número de Identificación Tributario), una dirección y un nombre
(Razón Social). Un trabajador es modelado por su ID, salario y apellidos y nombres. Llame Main a La clase que
contiene los métodos main, crearEmpresa y crearTrabajador. Naturalmente, el proyecto debe mostrar las relaciones
necesarias entre las clases.

También podría gustarte