4
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.

Practica repaso 1 3-2

Embed Size (px)

Citation preview

Page 1: Practica repaso 1 3-2

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>0m.c.d. (a , b) = a si b=0Ejemplo: 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.

Page 2: Practica repaso 1 3-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

Page 3: Practica repaso 1 3-2

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.

Page 4: Practica repaso 1 3-2

Algoritmos y Programas – Año 2012

Gráficamente: