Array Fill IV(beecrowd 1179)
Bom dia pessoal,
Perdi um pouco o raciocínio para poder pegar o resto dos números pares e impares para imprimir no final, na minha solução, mostrada na imagem, eu peguei apenas os cinco pares e os cinco ímpares, como eu faço para pegar os outros cinco que sobrarem???
THIAGO JUNIOR AMORIM DE MELO @thi4go19Agora você poderá refatorar esse exemplo acima e dá até para criar uma função para imprimir e adicionar os vetores sendo que a lógica para adicionar valores aos vetores e imprimir são iguais.
Em resposta aalandias⬆:THIAGO JUNIOR AMORIM DE MELO @thi4go19const valores = [1, 3, 4, -4, 2, 3, 8, 2, 5, -7, 54, 76, 789, 23, 98];
let pares = [];
let impares = [];
for (let i = 0; i < 15; i++) {
let numero = parseInt(valores[i]);
if (numero % 2 === 0) {
//se for par entra aqui
if (pares.length < 5) {
pares.push(numero);
} else {
//imprime vetor par se ele estiver com 5 posições
for (let cont = 0; cont < 5; cont++) {
console.log(par[${cont}] =+ pares[cont]);
}
//Limpa vetor par a partir da posic 0.
pares.splice(0);
pares.push(numero);
}
} else {
//se impar par entra aqui
if (impares.length < 5) {
impares.push(numero);
} else {
//imprime vetor impar se ele estiver com 5 posições
for (let cont = 0; cont < 5; cont++) {
console.log(impar[${cont}] =+ impares[cont]);
}
//Limpa vetor impares a partir da posic 0
impares.splice(0);
impares.push(numero);
}
}
}
//ao sair do laço imprime o restante começando pelo vetor impar;
let contImpar = 0;
impares.forEach(
impar => {
console.log(impar[${contImpar}] =+ impar);
contImpar++;
}
);
let contPar = 0;
pares.forEach(
par => {
console.log(par[${contPar}] =+ par);
contPar++;
}
);
Em resposta aalandias⬆:THIAGO JUNIOR AMORIM DE MELO @thi4go19Agora deu certo rsrsrsrsrsrsr
- CEm resposta aalandias⬆:Camila Vieira @CamilaVieira
Oi, Alan. Vou tentar te explicar sem colocar código aqui. Eu acho que o problema é que você está fazendo a checagem do tamanho dos vetores 'par' e 'impar' fora do for. Da forma que você fez, mais de 5 números vão ser colocados nos vetores par e impar.
Dentro do for que recebe os 15 números, você precisa checar se os vetores tem tamanho 5 e já imprimir eles, em seguida esvaziar o vetor pra poder colocar os próximos números de entrada.
Essa é uma abordagem que você poderia usar. O seu código está no caminho certo, só teve essa pequena falha.
Espero ter ajudado!
- AAlan @alandias
Olá, Camila, Obrigado pela explicação, entendi.
- AEm resposta aalandias⬆:Alan @alandias
Obrigado, vou tentar entender a sua solução, Obrigado !
Em resposta aalandias⬆:THIAGO JUNIOR AMORIM DE MELO @thi4go19Poderia mandar seu código aqui? deixa eu refatorar ele e te enviar um exemplo explicando.
- AAlan @alandias
Olá, Thiago
Sim, vou mandar aqui, Obrigado !!!let pares = [];
let impares = [];for(let i = o; i < 15; i++){
let numero = parseInt(lines.shift());
if(numero % 2 === 0){
pares.push(numero);
}else{
impares.push(numero);
}
}if(pares.lenght === 5){
for(let i = 0; i < 5; i++){
console.log(par[${i}] = ${pares[i]});
}
}
if(impares.lenght === 5){
for(let i = 0; i < 5; i++){
console.log(impar[${i}] = ${impares[i]});
}
}