Ejercicio resuelto / Ayudantía 2 Computación III
1) Se requiere implementar una clase que pueda calcular
la mediana, el promedio y la varainza, de un
conuunto de datos de tipo real,
ingresados por teclado.
Además se pide
que los métodos promedio y varianza, sean estáticos.
Codigo fuente
import java.io.*;
public class Estadistica
{
double a[];
/* Constructor */
public Estadistica(double arr[])
{
if (arr.length > 0)
{
a = new double[arr.length];
for(int i = 0; i < a.length; i++)
{
a[i] = arr[i];
}
}
}
private void ordenar()
{
double tmp;
int i,k;
/* algoritmo de la burbuja */
for(k = 0; k < a.length; k++)
for(i = 0; i < a.length - 1 ; i++)
{
if (a[i] > a[i+1])
{
/* intercambio de posicion */
tmp = a[i];
a[i] = a[i+1];
a[i+1] = tmp;
}
}
}
public void verArreglo()
{
System.out.print("Arreglo : ");
for (int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
System.out.println();
}
/* retorna la mediana en funcion de la paridad del numero
de elementos. Los ordena previamente */
public double mediana()
{
ordenar();
if (a.length % 2 == 0)
{
return (a[(a.length / 2) - 1] + a[a.length / 2]) / 2.0;
}
else
{
return a[(a.length - 1) / 2];
}
}
public static double promedio(double arr[])
{
double sum = 0.0;
for(int i = 0; i < arr.length; i++)
{
sum += arr[i];
}
/* realiza un cast o conversion de tipo a la
variable arr.length */
return sum / (double) arr.length;
}
public static double varianza(double arr[])
{
double prom = promedio(arr);
double sum = 0.0;
for(int i = 0; i < arr.length; i++)
{
sum += Math.pow(arr[i] - prom,2);
}
return sum / arr.length;
}
public static void main(String args[]) throws IOException
{
BufferedReader in = new BufferedReader(
new InputStreamReader(System.in));
int seguir = 1;
int numDatos;
double arreglo[];
while(seguir == 1)
{
System.out.print("Cantidad de datos a ingresar : ");
numDatos = Integer.parseInt(in.readLine());
if (numDatos > 0)
{
arreglo = new double[numDatos];
for(int i = 0; i < numDatos; i++)
{
System.out.print("A[" + i + "] : ");
arreglo[i] = Double.parseDouble(in.readLine());
}
/* Crea instancia de clase u objeto */
Estadistica e = new Estadistica(arreglo);
System.out.println("Mediana : " + e.mediana());
e.verArreglo();
/* accesa metodos estáticos que no necesitan instancia */
System.out.println("Promedio : " + Estadistica.promedio(arreglo));
System.out.println("Varianza : " + Estadistica.varianza(arreglo));
}
else
{
System.out.println("Se necesita una cantidad de datos mayor que cero");
}
System.out.print("\nSalir(0) , Seguir(1) : ");
seguir = Integer.parseInt(in.readLine());
} // while
} // fin main
} // fin classBajar archivo
Salida a pantalla
