Preciso desenvolver um programa que leia e armazene 10 números em um vetor e depois em um outro vetor armazene os números pares e ainda num terceiro armazene os ímpares, e um outro programa que preencha um vetor com 10 números e armazene em um segundo vetor de mesma dimensão primeiros os números pares em ordem crescente e depois os ímpares em ordem crescente também. Preciso resolver isso para amanhã e to com bastante dificuldade, já passei horas e horas tentando desenvolver o algoritmo, alguém ai tem um algoritmo para isso?
Vetores e Ordenaçao - Ajuda URGENTE!
8 Respostas
Poste os algoritmos que vc tentou fazer que te ajudamos.
Os algorítmos não estão no pc mas posso passar o código, no primeiro programa eu ja consegui separar os pares dos ímpares numa string mas como o exercício que em um vetor... já no segundo eu consegui ordenar os números mas não primeiro os pares e depois os ímpares, tão ai os códigos:
long[] numeros = new long[10];
long[] par = new long[10];
long[] impar = new long[10];
int npar = 0, nimpar = 0, a;
String saida = "Valores digitados: ";
String pares = "Números pares digitado: ";
String impares = "Números impares digitados: ";
for(int i = 0; i<=9; i++)
{
numeros[i] = Long.parseLong(JOptionPane.showInputDialog(null, "Digite o "+(i+1)+"º número", "Entrada de Dados", JOptionPane.PLAIN_MESSAGE));
if(numeros[i] % 2 == 0)
{
par[npar] = numeros[i];
npar = npar + 1;
pares += +par[npar]+" ";
}
else
{
impar[nimpar] = numeros[i];
nimpar = nimpar + 1;
impares += +impar[nimpar]+" ";
}
saida += +numeros[i]+ " ";
}
JOptionPane.showMessageDialog(null, pares+" \n"+impares+" ");
Entrei com os valores: 0; 9; 8; 7; 6; 5; 4; 3; 2; 1;
Nesse aqui na saída ele mostra: Numeros pares digitados: 0 0 0 0 0
Numeros impares digitados: 0 0 0 0 0
int aux, min;
int par = 0, npar = 0, impar = 0, nimpar = 0;
int[] numeros = new int[10];
int[] armazena = new int[10];
String saida = "Números digitados: ";
for(int x = 0; x<=9; x++)
{
numeros[x] = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o "+ (x+1) +"º número", "Entrada de Dados", JOptionPane.PLAIN_MESSAGE));
if(numeros[x] % 2 == 0)
{
npar = npar + 1;
}
else
{
nimpar = nimpar + 1;
}
}
for(int i = 0; i<=10; i++)
{
min = i;
for(int j = i+1; j<10; j++)
{
if(numeros[j] < numeros[min])
{
min = j;
}
}
if(min != i)
{
aux = numeros[i];
numeros[i] = numeros[min];
numeros[min] = aux;
}
for(int n = 0; n<=9; n++)
{
if(numeros[n] % 2 == 0)
{
armazena[par] = numeros[n];
par = par + 1;
}
else
{
impar = impar + 1;
armazena[npar + impar] = numeros[n];
}
}
saida += +numeros[i]+ " ";
JOptionPane.showMessageDialog(null, saida, "Saída de Dados", 1);
}
Nesse aqui a JOption nem está sendo exibida...
Desculpa ai se eu não estiver vendo algum erro besta mas ainda sou iniciante em Java
Segue a solução para o primeiro exercicio...
substitui o trecho em questao...if(numeros[i] % 2 == 0)
{
par[npar] = numeros[i];
pares += par[npar]+" ";
npar = npar + 1;
}
else
{
impar[nimpar] = numeros[i];
impares += String.valueOf(impar[nimpar]) + " ";
nimpar = nimpar + 1;
}
Espero ter ajudado...
Abraço.
valeu Fabio, ajudo pra caramba…
agora só falta o 2º… 
Opa, humberto... blz?
Depois de uma caminhada até em casa...
voltei pra termina o serviço...
segue a resolução do segundo exercicio...
import javax.swing.JOptionPane;
/**
*
* @author Fabio Q. (GUJ)
*/
public class ordenacao {
public static void main(String[] args) {
new ordenacao().exec();
}
public void exec(){
int npar = 0, nimpar = 0;
int numeros;
int host = 0;
int[] vetPar = new int[10];
int[] vetImpar = new int[10];
String saidaPar = "Números pares em ordem: ";
String saidaImpar = "Números impares em ordem: ";
for(int x = 0; x<10; x++)
{
numeros = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o "+ (x+1) +"º número", "Entrada de Dados", JOptionPane.PLAIN_MESSAGE));
if(numeros % 2 == 0)
{
vetPar[npar] = numeros;
npar++;
}
else
{
vetImpar[nimpar] = numeros;
nimpar++;
}
}
for (int k = 0; k < npar; k++){
for (int l = 0; l < npar - 1; l++){
if (vetPar[l] > vetPar[l+1]) {
host = vetPar[l];
vetPar[l] = vetPar[l+1];
vetPar[l+1] = host;
}
}
}
for (int k = 0; k < nimpar; k++){
for (int l = 0; l < nimpar - 1; l++){
if (vetImpar[l] > vetImpar[l+1]) {
host = vetImpar[l];
vetImpar[l] = vetImpar[l+1];
vetImpar[l+1] = host;
}
}
}
for ( int k = 0; k < npar; k++) {
saidaPar += String.valueOf(vetPar[k]) + " ";
}
for ( int k = 0; k < nimpar; k++) {
saidaImpar += String.valueOf(vetImpar[k]) + " ";
}
JOptionPane.showMessageDialog(null, saidaPar+" \n"+saidaImpar+" ");
}
}
Espero ter ajudado... Qualquer problema ... pergunta, se eu puder eu ajudo =)
Abraço.
Ae fabio valeu pela ajuda, eu só não entendi uma coisa, nesse trecho do código abaixo por precisou do "k" no laço se ele não está sendo usado ali?
for (int k = 0; k < npar; k++){ for (int l = 0; l < npar - 1; l++){ if (vetPar[l] > vetPar[l+1]) { host = vetPar[l]; vetPar[l] = vetPar[l+1]; vetPar[l+1] = host; } } } for (int k = 0; k < nimpar; k++){ for (int l = 0; l < nimpar - 1; l++){ if (vetImpar[l] > vetImpar[l+1]) { host = vetImpar[l]; vetImpar[l] = vetImpar[l+1]; vetImpar[l+1] = host; } } }
esta sendo usado sim, ele eh o contador do laço… nao estou usando como indice…
mas isso garante q o vetor fique em ordem, pq ele repete o teste de troca varias vezes…
digamos…
sequencia…
5, 4, 3, 2, 1… o teste de mesa fica…
l=0, l=1, l=2, l=3, l=4
4, 3, 2, 1, 5 | k = 0
3, 2, 1, 4, 5 | k = 1
2, 1, 3, 4, 5 | k = 2
1, 2, 3, 4, 5 | k = 3
imaginando uma matriz de execução no sentido esquerda para direita… seria esse os valores de K e L… em seus respectivos momentos…
nao fico mto claro, mas eh isso… AUSHUH
entao, K é usado… como contador do laço ^^
poderia ser usado o I e J? poderia, troquei só para ficar mais didatico…
Abraço.
aah ta entendi, por cara valeu mesmo, me ajudo pra caramaba.