Olá, estou criando um Histograma no qual devo registrar o número de ocorrências de valores inteiros dentro de uma faixa de 100 valores.
Por exemplo, se eu registrar os valores :
1 3 3 2 5 6 8 6 4 6 8 3 1 2 0
Deve imprimir
0 : 1 ocorrência
1 : 2 ocorrências
2 : 2 ocorrências
3 : 3 ocorrências
4 : 1 ocorrência
5 : 1 ocorrência
6 : 3 ocorrências
7 : 0 ocorrências
8 : 2 ocorrências
9 : 0 ocorrências
.
.
99: 0 ocorrências
Na minha classe de teste está gerando isso :
REGISTRADOS
1 1 1 1 1 1 1 1 2 3 3 3 5 6 7
1-> 8 Ocorrencias
2-> 1 Ocorrencias
3-> 3 Ocorrencias
5-> 1 Ocorrencias
6-> 1 Ocorrencias
7-> 1 Ocorrencias
0-> 0 Ocorrencias
0-> 0 Ocorrencias
0-> 0 Ocorrencias
0-> 0 Ocorrencias
0-> 0 Ocorrencias
Segue abaixo o código da implementação :
public class TesteVetorRepet
{
private int inicio;
private int quantidade = 1;
private int posicao = 0;
private int[] vNumerosLidos = new int[100];
private int[] vNumerosRepetidos = new int[100];
private int[] vTotalRepeticoes = new int[100];
private int[] vtotal = new int[1];
private int iTotalRepetidos, i, j, aux;
private boolean achouRepetido;
public TesteVetorRepet()
{
this.inicio = 1;
}
void registrar(int valor)
{
//cria um novo array conforme vai add elementos
int[] temp = new int[quantidade];
// add os elementos de total no novo array
for (int i = 0; i < vtotal.length; i++) {
temp[i] = vtotal[i]; }
// add o o novo elemento
temp[posicao] = valor;
// repassa para total o novo array
vtotal = temp;
quantidade++;
posicao++;
}
void verifica_ocorrencias(int[] v)
{
for(i = 0; i < v.length; i++){
vNumerosLidos[i] = v[i];
/* Aqui começa o trecho que varre os vetores acima criados para ver a quantidade de vezes que se
* repetem as informações digitadas */
achouRepetido = false;
for (j=0; j<v.length; j++){
if (vNumerosRepetidos[j] == vNumerosLidos[i] ){
vTotalRepeticoes[j]++;
achouRepetido = true;
break;}
}
if (achouRepetido == false){
vNumerosRepetidos[iTotalRepetidos] = vNumerosLidos[i];
vTotalRepeticoes[iTotalRepetidos]++;
iTotalRepetidos++;}
}
for(i = 0; i < v.length; i++){
System.out.print(vNumerosLidos[i]);
System.out.print(" ");
}
System.out.println();
for(i = 0;i< v.length; i++){
System.out.println (vNumerosRepetidos[i] + "-> " + vTotalRepeticoes[i] + " Ocorrencias " );
}
}
void ordenar_vetor(int v[], int tamanho)
{
int i, j, temp;
for(i = 0; i < tamanho-1; i++){
for(j = 0; j < tamanho-1; j++){
if(v[j] > v[j + 1]){
temp = v[j];
v[j] = v[j + 1];
v[j + 1] = temp;
}
}
}
}
void imprimir()
{
System.out.println("REGISTRADOS");
for ( i = 0; i < vtotal.length; i++){
vNumerosLidos = vtotal;
ordenar_vetor(vNumerosLidos,vtotal.length);
}
verifica_ocorrencias(vNumerosLidos);
System.out.println();
}
public static void main(String[] args)
{
TesteVetorRepet t = new TesteVetorRepet();
t.registrar(1);
t.registrar(3);
t.registrar(3);
t.registrar(1);
t.registrar(1);
t.registrar(6);
t.registrar(5);
t.registrar(7);
t.registrar(3);
t.registrar(2);
t.registrar(1);
t.registrar(1);
t.registrar(1);
t.registrar(1);
t.registrar(1);
t.imprimir();
}
}
OBRIGADO.
[list][/list]