1. Algoritmos y Programas – Año 2012
Práctica de Repaso
Objetivos:
• Repasar los conceptos aprendidos en las Prácticas anteriores.
1) Programar en Python un algoritmo recursivo que permita hacer la división por restas
sucesivas.
0 si (b > a)
division(a, b)
division(a-b, b) + 1 si (b <= a)
2) Implemente una solución recursiva que permita invertir un número.
Ejemplo: Entrada: 123 Salida: 321
n si (n < 10)
invertir(int n)
(n modulo10) + invertir (n : 10) x 10 si (n => 10)
3) Programar un algoritmo recursivo que permita sumar los dígitos de un número.
Ejemplo: Entrada: 123 Resultado:6
n si (n == 0)
sumar_dig (int n)
sumar_dig (n : 10) + (n modulo10) si (n > 0)
4) Sea:
Algoritmo de Euclides:
m.c.d. (a , b) = m.c.d. (b , a mod b) si b>0
m.c.d. (a , b) = a si b=0
Ejemplo: m.c.d. (57, 23) = m.c.d. (23, 11) = m.c.d. (1,0) = 1
Implemente en Python una versión recursiva del Algoritmo de Euclides.
5) Provea un TAD cuya funcionalidad sea resolver para cálculos vectoriales tridimensionales,
para ello se debe proveer las siguientes operaciones:
• sumaVectorial: toma dos vectores y los suma elemento a elemento.
2. Algoritmos y Programas – Año 2012
• productoDeUnEscalar: toma un vector y un numero escalar y retorna otro vector cuyos
elementos son el resultado del producto del escalar por el elemento del vector original.
• productoVectorial : toma dos vectores y calcula el producto vectorial de acuerdo al
siguiente criterio:
• productoEscalar: toma dos vectores y retorna un numero con el producto escalar, de
acuerdo al siguiente criterio
3. Algoritmos y Programas – Año 2012
6) (A entregar) Se desea modelar una empresa, la cual posee un nombre, una breve
descripción de la misma y un grupo de empleados.
La empresa posee de cada empleado la siguiente información: su nombre y apellido
completos, su DNI, su edad, su sueldo, el puesto y la antigüedad dentro de la empresa.
Los puestos ( de mayor a menor ) pueden ser: Presidente, Gerente General, Gerente de
Departamento, Jefe de Departamento y Empleado, de los cuales Presidente solo puede haber
uno.
Para este ejercicio piense con que estructuras de datos se pueden modelar la empresa y los
empleados, y realice las funciones que al menos resuelvan los siguientes problemas:
Para un Empleado:
• nuevoEmpleado: Crear un nuevo empleado.
• nombreEmpleado: Retorna el nombre completo del empleado.
• dniEmpleado: Retorna el dni del empleado.
• edadEmpleado: Retorna la edad del empleado.
• sueldoEmpleado: Retorna el sueldo del empleado.
• puestoEmpleado: Retorna el puesto del empleado.
• antiguedadEmpleado: Retorna la antigüedad del empleado.
Para la Empresa:
• nuevaEmpresa: Crear una empresa nueva.
• agregarEmpleado: Agrega un nuevo empleado a la empresa.
• nombreEmpresa: Retorna el nombre de la empresa.
• descripcionEmpresa: Retorna la descripción de la empresa.
• empleadosEmpresa: Retorna los empleados de la empresa.
• cantidadDeEmpleados: Retorna cuantos empleados tiene la empresa.
• buscarEmpleadoPorDni: Retorna el empleado que posee ese dni.
• buscarPresidente: Retorna el empleado que tiene el puesto de presidente.
• buscarEmpleadoConMasAntiguedad: Retorna el empleado con la mayor
antigüedad.
• * buscarEmpleadosQueGananMasDelPromedio: Retorna el promedio de los
sueldos de la empresa y una lista de empleados que ganen más que ese promedio.
• retirarPresidente: se debe eliminar al Presidente de la nómina de empleados y
ascender al empleado de mayor antigüedad, duplicándole el sueldo.
• * compararEmpresas: recibe 2 empresas y retorna si la suma de los sueldos de la
primer empresa es mayor que los de la segunda o no.
• * fusionarEmpresas: recibe 2 empresas y crea una nueva con los empleados de las 2
empresas y los nombres y descripciones concatenadas. Tener en cuenta que solo
puede haber 1 solo presidente, el de mayor antigüedad, el otro pasa a ser Gerente
General.
Aquellos items con * son opcionales para incrementar nota.