1
resposta

A principio pareceu bem complicado, mas de acordo com o que vai desenvolvendo vai simplificando.

//realiza o sorteio com os participantes do array
function realizarSorteio(participantes)
{// se não for um array ou a quantidade de participantes for inferior a 5, exibe uma mensagem de aviso
    if (!Array.isArray(participantes)|| participantes.length < 5)
    {
        console.log("É necessário que tenham vários participantes.");
    }
    else
    {//realiza o sorteio de acordo com o indice do array, multiplicando a quantidade de participantes 
    const indice = Math.floor(Math.random() * participantes.length);
    const sorteado = participantes[indice];
    //chama a função para avaliar a pontuação do participante sorteado
    const avalSorteado = avaliaPontuacao(sorteado);
// chama a função para exibir a mensagem com  atraso
    exibeSorteado(sorteado, avalSorteado);
    }
}

// fução que avalia a pontuação do sorteado
function avaliaPontuacao(sorteado)
{
if (sorteado.pontuacao > 80) return `Parabens, você foi premiado!`;   

else if (sorteado.pontuacao <= 50) return `infelizmente, não foi dessa vez.`;

else  return `Você quase conseguiu! Fique de olho nos proximos sorteios.`;
}

//função que exibe o participante sorteado com a mensagem de acordo com sua pontuação.
function exibeSorteado(participante, avaliacao)
{
    setTimeout(()=>{ console.log(`Parabens ${participante.nome}, você foi escolhido com ${participante.pontuacao} e ${avaliacao}`);},2000)
}

//armazena os participantes no array
const participantes = 
[
  { nome: "Laura", pontuacao: 92 },
  { nome: "Pedro", pontuacao: 67 },
  { nome: "Clara", pontuacao: 44 },
  {nome: "Eduardo", pontuacao: 80},
    {nome: "Theo", pontuacao: 38},
  {nome: "Isis", pontuacao: 50},
  {nome: "Valdina", pontuacao: 152},
  {nome: "Leonidas", pontuacao: 60},
  {nome: "Milena", pontuacao: 30}

];
//chama a função para realizar o sorteio
realizarSorteio(participantes);
1 resposta

Oii, Eduardo!

É muito bom ver como você estruturou o seu pensamento para resolver esse desafio.

Você tocou em um ponto fundamental no desenvolvimento: problemas que parecem grandes se tornam simples quando os dividimos em partes menores. Essa é a base de um código bem organizado.

Gostei bastante da sua iniciativa de adicionar uma camada de validação no início da função realizarSorteio. Verificar se o dado é um array e se há um número mínimo de participantes traz mais segurança para a execução do script.

Notei alguns pontos que podem ajudar a deixar sua lógica ainda mais precisa, seguindo as regras de negócio propostas na atividade:

  • Regras de pontuação: No seu if/else, a mensagem "Você quase conseguiu!" está sendo exibida apenas para quem tem exatamente entre 51 e 80 pontos. O enunciado pedia que quem tivesse 50 pontos também recebesse essa mensagem. No seu código atual, quem tem 50 cai no "infelizmente, não foi dessa vez".
  • Atraso no feedback: Na saída esperada, o sistema exibe "Sorteando..." imediatamente e depois de 2 segundos mostra o resultado. No seu código, o console fica em branco durante o tempo de espera. Adicionar um console.log("Sorteando...") antes do setTimeout ajuda na experiência de quem usa o sistema.

Pra alinhar as faixas de pontuação com o que foi pedido, você pode ajustar as condições desta forma:

function avaliaPontuacao(sorteado) {
    if (sorteado.pontuacao > 80) {
        return "Parabéns, você foi premiado!";
    } else if (sorteado.pontuacao >= 50) { // Inclui o 50 aqui
        return "Você quase conseguiu! Fique de olho nos próximos sorteios.";
    } else {
        return "Infelizmente, não foi dessa vez.";
    }
}

E na função de exibir, para criar aquele clima de suspense:

function exibeSorteado(participante, avaliacao) {
    console.log("Sorteando..."); // Feedback imediato
    setTimeout(() => { 
        console.log(`Participante sorteado: ${participante.nome}`);
        console.log(`Pontuação: ${participante.pontuacao}`);
        console.log(avaliacao);
    }, 2000);
}

Continue praticando essa quebra de problemas em funções menores, pois isso ajuda muito na leitura do código por outras pessoas da equipe.

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!