hgb7 3 Denunciar post Postado Abril 16, 2010 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
Vergil 15 Denunciar post Postado Abril 16, 2010 É 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
hgb7 3 Denunciar post Postado Abril 17, 2010 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 5Eu 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
Beraldo 864 Denunciar post Postado Abril 17, 2010 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
hgb7 3 Denunciar post Postado Abril 18, 2010 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