GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Exemplo de calcular média, moda e mediana


#1

Olá a todos,

andei pesquisando aqui no fórum sobre calculo de média, moda e mediana, encontrei alguns tópicos,mas, nenhum chegava ao meu problema. Tenho um array com uns valores informados pelo usuário, apartir desse array, gostaria de calcular a média, moda e mediana.

alguem teria algum exemplo pra me mostrar?

obrigado


#2

int [] Vet = new int[100];

Mediana:

int esq=0;
int dir=Vet.length-1;
int meio;
meio=(esq+dir)/2;
mediana = Vet[meio];

Media:

soma = 0;
for (int i=0;i<Vet.length-1;i++){
     soma= soma+Vet[i];
}
media = (soma/Vet.length);					

E a moda:

Nao entendi direito, mas é o valor que surge com mais freqüência?


#3

Olá c0m4nch3, mto obrigado pela resposta.

mediana ja esta ok.

a moda sim, é o que mais se repete dentro do array, mas, digamos, o numero 12 se repete 5x, e o numero 72 tambem s repete 5x, entao a moda sao esses dois numeros, o 12 e o 72. lembrando que a moda sáo ou é o numéro que mais se repete..

abraço


#4

import java.util.HashMap;   
import java.util.HashSet;   
import java.util.Iterator;   
import java.util.Map;   
import java.util.Set;   
public class Moda {   
    private Map valores = new HashMap();   
    public Moda() {}   
    public void adicionar(int numero) {   
        Integer n = new Integer(numero);   
        /** Verifica se já existe esse elemento no mapa */  
        if (valores.get(n) != null) {   
            valores.put(n, new Integer(((Integer)valores.get(n)).intValue() + 1));   
        }   
        else {   
            valores.put(n, new Integer(1));   
        }   
    }   
    public Map getValores() {   
        return valores;   
    }   
    public Set calcular() {   
        /** Maior valor encontrado até o momento */  
        Integer maior = null;   
        Set resultado = new HashSet();   
        Iterator iterator = valores.keySet().iterator();   
        while (iterator.hasNext()) {   
            /** Número atual sendo avaliado */  
            Integer valor = (Integer)iterator.next();   
            /** Quantidade de ocorrências do número atual */  
            Integer current = (Integer)valores.get(valor);   
            if (maior == null) {   
                maior = current;   
            }   
            /** Encontrou um número com mais ocorrências */  
            if (maior.compareTo(current) <= 0) {   
                maior = current;   
                resultado.add(valor);   
            }   
        }   
        iterator = resultado.iterator();   
        while (iterator.hasNext()) {   
            Integer numero = (Integer)iterator.next();   
            /**  
             * Não tem o mesmo número de ocorrências que o maior número de  
             * ocorrências encontrado?  
             */  
            if (((Integer)valores.get(numero)).compareTo(maior) < 0) {   
                iterator.remove(); // Já era!   
            }   
        }   
        return resultado;   
    }   
    public static void main(String[] args) {   
        Moda moda = new Moda();   
        for (int i = 0; i < 20; i++) {   
            moda.adicionar((int)(Math.random() * 10));   
        }   
        System.out.println(moda.getValores());   
        System.out.println("A moda é: " + moda.calcular());   
    }   
}

O codigo acima é do Tritone


Programação em C Mediana e Moda em Vetor
#5

olá c0m4nch3,

mais uma vez, obrigado por me ajudar nestes problemas. as solucoes que voce postou são bastantes legiveis para meu aprendizado e solucao do problema.

parabéns..

abraço


#6

O algoritmo está incompleto, pois só funciona com quantidade ímpar de dados. Se há um número par de dados, a mediana é a média dos dois valores do meio.

Ex:

mediana(1,2,3,4,5) = 3 (valor do meio)
mediana (1,2,3,4) = (2+3)/2 = 2.5


#7