Free Web Site - Free Web Space and Site Hosting - Web Hosting - Internet Store and Ecommerce Solution Provider - High Speed Internet
Search the Web

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 class
Bajar archivo


Salida a pantalla