Java Ajuda

Elvirusfatal

Power Member
Teho de faxer um programa que atraves de varios valores calcule a media mediana moda e desvio padrao, ja fiz a media e mediana mas a moda principalmente não consigo fazer..

Se alguem me poder ajudar ..

Agradeço.!
 
Teho de faxer um programa que atraves de varios valores calcule a media mediana moda e desvio padrao, ja fiz a media e mediana mas a moda principalmente não consigo fazer..

Se alguem me poder ajudar ..

Agradeço.!
Em Português:
Tenho que fazer um programa que através de vários valores calcule a média, mediana, moda e desvio padrão. Já fiz a média e mediana mas a moda principalmente não consigo fazer ...

Se alguém me poder ajudar ...

Agradeço!

Eu sei o que é a moda!, n sei é como faxer porque teho de comparar o valor da posição x+1 com todos os valores ate então pecorridos..
Podes fazer a moda de várias maneiras, uma delas é:
Código:
arrayNr -> array com os números
int max = 0
int moda = 0

for i = 0 até total de números-1 {
  int num = arrayNr[i]
  int cnt = 0;
  for j = 0 até total de números-1 {
     if ( j == arrayNr[j] ){
       cnt ++
     }
  }
  if ( cnt > max ){
    max = cnt
    moda = num
  }
}

Em princípio isto deve funcionar, apesar de não ser a melhor maneira de resolver, pelo menos não deve ser a com melhor performance.


PS: Cuidado com o Português.
 
Última edição:
Para a moda, começas com um Map vazio. Ao percorreres o array, verificas se o elemento actual já está no Map e: se ainda não estiver, colocas-lo lá com o valor 1 associado; se já lá estiver, aumentas uma unidade ao valor associado. No final vez qual o valor do Map tem um maior valor associado.
 
Última edição:
O português:lol:, já é 2º vez que me dizem para escrever correctamente, eu escrevo correctamente, mas quando ando na net nunca o faço..

De qualquer maneira obrigado pela ajuda.

Será que também me dás uma ajuda no desvio padrão?
 
Código:
   public static double sdFast ( double[] data )
      {
      // sd is sqrt of sum of (values-mean) squared divided by n - 1
      // Calculate the mean
      double mean = 0;
      final int n = data.length;
      if ( n < 2 )
         {
         return Double.NaN;
         }
      for ( int i=0; i<n; i++ )
         {
         mean += data[i];
         }
      mean /= n;
      // calculate the sum of squares
      double sum = 0;
      for ( int i=0; i<n; i++ )
         {
         final double v = data[i] - mean;
         sum += v * v;
         }
      return Math.sqrt( sum / ( n - 1 ) );
      }

@link
 
É o seguinte , eu queria saber se existe alguma maneira de eu importar entre vários ficheiros de texto aleatoriamente e sempre que o desejar sem ter de especificar o nome do ficheiro no código para um array!

Agradecia algum tipo de ajuda .. obrg.
 
Se esses ficheiros estiverem no mesmo directório é fácil, basta fazeres uma listagem dos ficheiros.
Código:
        File file = new File("directório");
        File files[] = file.listFiles(filter);
 
Se esses ficheiros estiverem no mesmo directório é fácil, basta fazeres uma listagem dos ficheiros.
Código:
        File file = new File("directório");
        File files[] = file.listFiles(filter);

Eu queria apenas testar os valores que eles contêm.

while (in.hasNext()) {
int Nota = in.nextInt();
int N_Aluno = in.nextInt();

Agora falta-me a parte de adicionar estes ao array. que não sei como se faz. depois de adicionados ja os posso testar para obter mediana , moda..
 
Se já consegues fazer isto:
Código:
while (in.hasNext()) { 
int Nota = in.nextInt(); 
int N_Aluno = in.nextInt();

basta fazer assim:
Código:
int Nota[] = new int[nrAlunos];
int N_Aluno[] = bew int[nrAlunos];
int i = 0;
while (in.hasNext()) { 
  Nota[i] = in.nextInt(); 
  N_Aluno[i] = in.nextInt();
  i++;
}
 
Muito obrigado Senhor Rodrigues, já esta quase tudo feito , apenas me falta um pormenor , meter o tamanho do vector com o mesmo tamanho do numero de dados inseridos .. ou seja por exemplo o vector notas , conforme se insere uma nota ele iria incrementando o seu tamanho a partir do zero ou 1..
 
Os arrays por si só penso que não dão para incrementar o seu tamanho em runtime, isto é têm tamanho fixo, definido à partida.

Uma alternativa seria usares um ArrayList ou um Vector. Estes dão para encolher e esticar conforme precises.
 
Como é que eu faço para poder aumentar um campo de um vector por exemplo: a posição 4 do vector A tem o valor 3 , eu quero passar esse valor a 4.!
 
Como é que eu faço para poder aumentar um campo de um vector por exemplo: a posição 4 do vector A tem o valor 3 , eu quero passar esse valor a 4.!

Atenção que eu estava-me a referir ao tamanho do vector, não ao valor das suas posições.

Para o que pedes, basta:

vector[4]++;

ou

vector[4] += 1;

ou ainda

vector[4] = vector[4] +1;
 
obrigado _freelancer_!.

eu quero fazer retornar a frequência de notas , ou seja

20 1
19 3
.....

Teho um vector com as notas que vou inserindo e nome de aluno correspondente!
String s1="";
int rept=0;
for(int i=20; i < 1; i--){
for(int v=0; v < counter; v++){
if(v==i){
rept++;
s1+="\n"+V_Notas+"\t"+rept+"\n";
}
}
}
return s1;
}
Mas não esta a dár como quero!


Tambem o metodo que me deveria retornar a moda não esta a foncionar.. não sei porque :S

Tenho assim;

public int mode() {
int maxValue=0;
int maxCount = 0;

for (int i = 0; i < counter-1; i++) {
int count = 0;
for (int j = 0; j < counter-1; j++) {
if (V_Notas[j] == V_Notas)
count++;
}
if (count > maxCount) {
maxCount = count;
maxValue = V_Notas;
}
}

return maxValue;
}
 
Última edição:
Back
Topo