Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hgb7

[Resolvido] Organizar Array em pares e impares...

Recommended Posts

Bom dia

 

Não estou conseguindo organizar o array em pares primeiro e ímpares depois, alguém pode me ajudar? :)

 

/**
 *
 * @author hgb7
 */
import java.util.Scanner;
public class Teste1
{
    public static void main(String[] args)
    {
        int n;
        int i, aux;
        int media = 0, maior = 0;
        int [] nInteiros;
	boolean troca = true;
        
        Scanner s = new Scanner(System.in);

        System.out.println("Quantos números deseja inserir: ");
        n = s.nextInt();
        nInteiros = new int [n]; //2

	for (i = 0; i < n; i++) // i=2 n=2
	{
		System.out.println("Digite o " + (i+1) + " número: ");
		nInteiros[i] = s.nextInt(); // 0 = 40 , 1 = 60
		media = media + nInteiros[i];
		if (nInteiros[i] > maior)
                {
			maior = nInteiros[i];
		}	
	}

        System.out.println("O maior número é o " + maior);
	media = media/n;
	System.out.println("A média entre os números são: " + media);

        while (troca == true)
	{
        	troca = false;
		for (i = 0; (i+1) < n; i++) //n=2 i=1
		{
                           if (nInteiros[i] % 2 != 0)
                           {
                               aux = nInteiros[i];
                               nInteiros[i] = nInteiros[i+1];
                               nInteiros[i+1] = aux;
                           }
                }
        }

        System.out.print("Os valores inseridos foram: ");
        for (i = 0; i < n; i++) //i=0 n=2
        {
            System.out.print(nInteiros[i] + " ");
        }
        System.out.println("");

    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

É apenas pra ordenar pares e ímpares? Não precisa por valor?

for(i=0; i<n; i++) {
   if(i > 0) {
      if(nInteiros[i] % 2 == 0 && nInteiros[i-1] % 2 != 0) {
         int aux = nInteiros[i-1];
         nInteiros[i-1] = nInteiros[i];
         nInteiros[i] = aux;
      }
   }
}

Isso é só uma idéia. Não cheguei a testar. Creio que a partir disso você possa montar seu algoritmo de ordenação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, beleza?

 

Então... seu laço também funciona, e o meu ficou assim agora:

for (i = 0; i < (n-1); i++) //n=2 i=1
                {
                           if (nInteiros[i] % 2 != 0)
                           {
                               aux = nInteiros[i];
                               nInteiros[i] = nInteiros[i+1];
                               nInteiros[i+1] = aux;
                           }
}

Mas quando faço o teste de mesa, veja:

Quantos números deseja inserir: 
5
Digite o 1 número: 
5
Digite o 2 número: 
4
Digite o 3 número: 
3
Digite o 4 número: 
2
Digite o 5 número: 
1
O maior número é o 5
A média entre os números são: 3
Os valores inseridos foram: 4 3 2 1 5
Eu quero o seguinte resultado:

Os valores inseridos foram: 4 2 3 1 5

Pares por primeiro e ímpares por segundo... :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, amador de chinesas. :P :D

 

 

Apenas um loop não resolve 100% dos casos. Você trem que seguir a lógica do Bubble Sort, em que cada elemento é comparado com todos os seus conseguintes.

 

Se você usar um loop apenas, um caso como este falhará:

1 5 4 2 3 7

Primeira iteração:

Não faz inversões, pois ammbos são ímpares.

 

 

A partir da segunda iteração, é feita uma troca, mas um ímpar permanece no início do array e ficará ali sempre

 

 

Faça assim:

 

        for(i=0; i<n; i++)
        {
   			for ( int j = i; j < n; j++ )
   			{
   				if ( nInteiros[i] % 2 != 0 && nInteiros[j] % 2 == 0 )
   				{
   					aux = nInteiros[j];
   					nInteiros[j] = nInteiros[i];
   					nInteiros[i] = aux;
   				}
   			}
   		}

 

Veja mais sobre ordenação aqui:

http://pt.wikipedia.org/wiki/Ordena%C3%A7%C3%A3o_de_vector

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Beraldo! beleza?

 

Sim... as amo ainda! haha :P

 

Obrigado pelas dicas, consegui agora... :)

 

Fica na paz

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.