PR07. Ejercicios sobre listas y conjuntos

Anuncio
FUNDAMENTOS DE PROGRAMACIÓN
PRÁCTICA 9: TRATAMIENTOS SECUENCIALES I
Curso: 2010/11
Versión: 1.0.0
OBJETIVOS
Resolución de cuestiones que requieran un tratamiento iterativo de un agregado
de datos.
Uso de los esquemas de resolución de tratamientos secuenciales vistos en clase.
EJERCICIOS PROPUESTOS
Nota: La metodología de trabajo de esta práctica es parecida a la de la práctica 6. En
este caso utilizaremos los esquemas vistos en teoría y trabajaremos con estructuras de
datos más elaboradas. Ejercicios más representativos: 1a, 1c, 1f, 2b y 2c.
EJERCICIO 1
En este ejercicio vamos a resolver una serie de cuestiones relacionadas con un grupo de
números reales. Cada cuestión será resuelta en un método static de una clase que
llamaremos Reales y tendrá como parámetro de entrada un List<Double>.
a) Dado un grupo de números reales, calcule la media aritmética de dichos valores.
Indicación: en la clase Reales, programe un método con la signatura:
public static Double mediaArtimetica(List<Double> datos){…}
Cree una clase llamada TestReales que herede de Test con un método main, en la
que se creará un List<Double> de prueba y se hará una llamada al método con el
objetivo de comprobar el correcto funcionamiento del mismo:
mostrar(“…”+Reales.mediaArtimetica(l));
b) Dado un grupo de números reales calcule la desviación estándar de dichos valores.
c) Dado un grupo de números reales calcule el valor máximo de dichos números.
d) Dado un grupo de números reales calcule el valor mínimo de dichos números.
Nota: utilice el esquema visto en teoría que se basa en el método auxiliar de la clase
Utiles que calcula el mínimo binario de dos elementos
Utiles.min(e,a) (se encuentra en el paquete utilidades)
e) Dado un grupo de valores reales, se dice que “hay ruido” cuando existen valores
mayores o menores que un cierto umbral de tolerancia. Programe el siguiente
método que establece si hay o no ruido para un cierto grupo de números:
public static Boolean hayRuido1(List<Double> datos, Double umbral){
f) Dado un grupo de valores reales determine si todos los valores son válidos (es
decir, que no hay ningún elemento que sea un null)
public static Boolean todosValoresVálidos (List<Double> l){
Práctica 9: Tratamientos secuenciales I
2
EJERCICIO 2
En este ejercicio vamos a resolver una serie de cuestiones relacionadas con grupos de
objetos de tipo Persona; para ello veamos previamente la descripción de este tipo.
Tipo Persona:
Nombre, apellidos, DNI de tipo String consultables.
Edad, de tipo Integer consultable y modificable.
Estatura, de tipo Double consultable y modificable.
Sexo, de tipo Char consultable y modificable.
Igualdad: mismos apellidos, nombre y DNI.
Orden: por apellidos, nombre y DNI respectivamente.
Cada cuestión se programará en un método static de una clase de nombre Personas (no
confundir con la interfaz Persona ni la clase PersonaImpl). Dicha clase ya está
empezada, bastará con completar el código para cada método.
Cada método de la clase Personas es testeado mediante un caso de prueba en la clase
TestPersonas para ver su correcto funcionamiento. Este código se da ya hecho; no
obstante observe y ejecute dicho código.
Se pide:
a) Dado un List<Persona> calcule la altura de la persona que sea más alta.
public static Double masAlto(List<Persona> grupo){…}
b) Dado un Set<Persona> y una determinada edad, ¿todas esas personas son
mayores de esa edad?
public static Boolean todosMayoresQue(Set<Persona> grupo,
Integer edad){…}
c) Dado un Set<List<Persona>> calcule la edad media de todas las personas
guardadas en la estructura de datos dada
public static Double edadMedia(Set<List<Persona>> red){…}
Indicación: como paso previo programe el siguiente método que nos permitirá
agrupar a todas las personas dadas en un único conjunto auxiliar:
private static Set<Persona> agrupaATodos(Set<List<Persona>> red){…}
//Se almacenan todas las personas de la red en un conjunto auxiliar
d) Dado un Set<Persona> calcule un listado con todos sus DNIs.
public static List<String> listadoDNI(Set<Persona> grupo){..}
Descargar