SO09 - Tratamientos secuenciales I

Anuncio
FUNDAMENTOS DE PROGRAMACIÓN
Curso: 2010/11
PRÁCTICA 9. TRATAMIENTOS SECUENCIALES I
Versión: 1.0.0
SOLUCIONES
Ejercicio 1. Clase Reales
public class Reales {
public static Double mediaArtimetica(List<Double> datos){
Double suma = 0.0;
for(Double e: datos){
suma = suma + e;
}
int n = datos.size();
suma = suma/n;
return suma;
}
public static Double desviacionEstandar(List<Double> datos){
double suma=0;
double media = mediaArtimetica(datos);
for(Double e: datos){
suma = suma + Math.pow(e-media,2);
}
int n = datos.size();
return Math.sqrt(suma/(n-1));
}
public static Double maximo(List<Double> datos){
Double maximo = datos.get(0);
for(Double e:datos){
if(e.compareTo(maximo)>0){ //e>maximo
maximo = e;
}
}
return maximo;
}
public static Double
minimo_CalculadoConMinimoBinario(List<Double> datos){
Double a=null;
for(Double e:datos)
a = a==null? e: Utiles.min(e,a);
//if(a==null)
//a = e;
//else
//a = Utiles.min(e,a);
return a;
}
public static Boolean hayRuido1(List<Double> datos,
Double umbral){
Boolean res = false;
for(Double e: datos)
res = res || (!(-umbral<e && e<umbral));
return res;
}
Práctica 9: Tratamientos Secuenciales I
public static Boolean hayRuido2(List<Double> datos,
Double umbral){
Boolean enc = false;
int i=0;
while(i<datos.size() && enc){
if(-umbral<datos.get(i) && datos.get(i)<umbral){
enc = true;
}
i++;
}
return enc;
}
public static Boolean hayRuido3(List<Double> datos,
Double umbral){
Boolean res = false;
for(Double e: datos)
if(!(-umbral<e && e<umbral)){
res = true;
break;
}
return res;
}
public static Boolean todosValoresVálidos (List<Double> l){
Boolean res = true;
for(Double e: l)
res = res && (! e.equals(null));
return res;
}
}
public class TestReales extends Test {
public static void main(String[] args) {
List<Double> datos = new ArrayList<Double>();
datos.add(1.0); datos.add(2.0); datos.add(3.0);
datos.add(4.0); datos.add(5.0);
mostrar("----->");
mostrar("Lista de prueba: datos = "+datos);
mostrar("-----> a)");
mostrar("La media aritmética de los datos es: "
+Reales.mediaArtimetica(datos));
mostrar("-----> b)");
mostrar("La desviación estándar de los datos es: "
+Reales.desviacionEstandar(datos));
mostrar("-----> c)");
mostrar("El valor máximo de los datos es: "
+Reales.maximo(datos));
mostrar("-----> d)");
mostrar("El valor mínimo de los datos es: "
+Reales.minimo_CalculadoConMinimoBinario(datos));
2
Práctica 9: Tratamientos Secuenciales I
mostrar("-----> e)");
mostrar("¿Hay ruido en los datos?: "
+Reales.hayRuido1(datos, 1000.0)
+ " -> Ruido si el valor excede a +1000 o -1000");
mostrar("-----> f)");
mostrar("¿Todos los valores son válidos?: "
+Reales.todosValoresVálidos(datos));
}
}
Ejercicio 2. Clase Personas
public class Personas {
/* Los métodos se pueden programar de varias formas, procuraremos
seguir los esquemas vistos en teoría */
public static Double masAlto(List<Persona> grupo){
Double a=null;
for(Persona e: grupo)
a = a==null? e.getEstatura():
Utiles.max(e.getEstatura(),a);
return a;
}
public static Boolean todosMayoresQue(Set<Persona> grupo,
Integer edad){
Boolean res = true;
for(Persona e: grupo)
res = res && !(e.getEdad().compareTo(edad)>edad);
return res;
}
public static Double edadMedia(Set<List<Persona>> red){
Set<Persona> grupo = agrupaATodos(red);
Double res = 0.0;
for(Persona p: grupo)
res = res + p.getEdad();
Double n = (double)grupo.size();
return res/n;
}
private static Set<Persona> agrupaATodos(
Set<List<Persona>> red){
//Set pues no queremos tener al mismo tipo dos veces
Set<Persona> res = new HashSet<Persona>();
for(List<Persona> e:red)
res.addAll(e);//Si uso add me hace falta otro for
return res;
}
public static List<String> listadoDNI(Set<Persona> grupo){
List<String> res = new ArrayList<String>();
for(Persona p:grupo)
res.add(p.getDNI());
return res;
}
}
3
Documentos relacionados
Descargar