Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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("");
}
}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;
}
}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... :)
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:
Opa Beraldo! beleza?
Sim... as amo ainda! haha :P
Obrigado pelas dicas, consegui agora... :)
Fica na paz
É apenas pra ordenar pares e ímpares? Não precisa por valor?
Isso é só uma idéia. Não cheguei a testar. Creio que a partir disso você possa montar seu algoritmo de ordenação.