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.
Nao entendi direito, mas é o valor que surge com mais freqüência?
M
Mostaert
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
C
c0m4nch3
importjava.util.HashMap;importjava.util.HashSet;importjava.util.Iterator;importjava.util.Map;importjava.util.Set;publicclassModa{privateMapvalores=newHashMap();publicModa(){}publicvoidadicionar(intnumero){Integern=newInteger(numero);/** Verifica se já existe esse elemento no mapa */if(valores.get(n)!=null){valores.put(n,newInteger(((Integer)valores.get(n)).intValue()+1));}else{valores.put(n,newInteger(1));}}publicMapgetValores(){returnvalores;}publicSetcalcular(){/** Maior valor encontrado até o momento */Integermaior=null;Setresultado=newHashSet();Iteratoriterator=valores.keySet().iterator();while(iterator.hasNext()){/** Número atual sendo avaliado */Integervalor=(Integer)iterator.next();/** Quantidade de ocorrências do número atual */Integercurrent=(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()){Integernumero=(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! }}returnresultado;}publicstaticvoidmain(String[]args){Modamoda=newModa();for(inti=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
M
Mostaert
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.
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.