Exibir a moda dos numeros digitados

1 resposta
java
T

Pessoal, alguem pode me ajudar? Se eu receber 5 números, e digitar: 1,1,1,2,3. Está imprimindo: O numero: 1 repete 3 vezes. O numero: 1 repete 2 vezes. Eu só queria que imprimisse : O numero: 1 repete 3 vezes. Mas não consigo fazer isso =( Sei que o for esta varrendo novamente os números repetidos e sei que é para comparar o vetRep e ver se já foi varrido aquele número, entretanto não consigo fazer isso =(

for(int i=0; i<vetNum.length;i++){
		cont =1;
		
		for(int j=i+1;j<vetNum.length;j++){
			if(vetNum[i] == vetNum[j]){
				vetRep[i]=vetNum[i];
				cont++;
				vetCont[i]=cont;
				
			}
			
		}
	}
	
	for(int i=0;i<vetNum.length;i++){
		if(vetCont[i] !=0){
			System.out.println("O numero: " + vetRep[i] + " repete " + vetCont[i] + " vezes.");
		}
		
	}

1 Resposta

D

Se os numeros repetem em sequencia, então basta ajustar o i no loop:

if(vetNum[i] == vetNum[j]){
  i = j;

Caso não, então escolha um numero que não seja usado, exemplo -1, substitua quando encontrar o número e insira a condição de busca

if (vetNum[i] != -1) {
  for(int j=i+1;j<vetNum.length;j++){
    if(vetNum[i] == vetNum[j]){
      vetNum[j] = -1;

ou então, após o segundo loop, crie um outro loop para checar se existe numero igual anterior

for(int j = 0;j<i;j++){
  if (vetNum[i] == vetNum[j]) {
    vetCont[i] = 0;
  }
}
Criado 9 de novembro de 2016
Ultima resposta 9 de nov. de 2016
Respostas 1
Participantes 2