Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Implementação código

Caro Instrutor!

Como faço para não sair 1942, 1946 ( Por causa da 2ª Guerra Mundial não houve copa) e também gostaria de implementar código que pegue os anos que efetivamente houve copa, tipo: 1930, 1934,1938, 1950,1954,1958... até 2014. Porque código apresentado se entro com a data 1991, aí ele soma 4 vai para 1995 e em 1995 não houve copa. Pensei em switch com camandos break; e continue;

Pensei correto? Pode me ajudar?

No aguardo.

2 respostas

Oi Eberson!

Para ignorar os anos das guerras mundiais, você precisará fazer uma condição if para excluir esses dias.

A ideia é mostrar como usar um loop while. Se você quiser fazer um código blindado a falhar, terá que criar um array (assunto que você não aprendeu ainda) com todos os anos de copas até a data atual. Como esse array será gerado por você, você terá certeza de que os anos são válidos. Nesse caso, a entrada do usuário seria apenas para fazer um "a partir de " do array que você já criou.

Como disse, você precisará de mais insumos para essa solução, até porque, nessa etapa da sua aprendizagem é que você saiba capturar a entrada do usuário e executar um código em loop até que uma condição seja atendida.

Mas como eu dei os caminhos das pedras, quando terminar o curso, você pode implementar a solução que acabei de explicar para ter a exibição dos anos fidedignas.

Sucesso e bom estudo meu aluno!

solução!

Oi Eberson,

Para evitar que não seja exibido 1942 e 1946, você poderia fazer algo como

while(anoCopa <= limite) {
    if(anoCopa  != 1942 && anoCopa !=1946) {
        mostra(anoCopa);
    }
    anoCopa = anoCopa + 4;
}

isto é, você só mostra os anos diferentes de 1942 e 1946, já que nestes não houve copa.

Sobre começar com 1991 e apenas imprimir os anos corretos, é um pouco mais complicado. De alguma forma, você tem que conseguir calcular qual é o primeiro ano depois de 1991 que teve copa (no caso 1994).

Vamos resolver um problema mais simples primeiro. Como saber se não teve copa em 1991? Bom, um jeito simples é pensar que 1991 é um ano ímpar e todas as copas são em anos pares. Mas só o fato do ano ser par não resolve, porque 1992 é par e não teve copa. O que todos os anos de copa tem em comum? A resposta pode parecer estranha, mas todos eles tem o resto da divisão por 4 igual a 2. Logo, podemos procurar o primeiro ano depois de 1991 que tem essa propriedade e começar nosso laço a partir dele.

Para calcular o resto da divisão em Javascript, utilizamos o operador %. Exemplo:

8 % 4 // igual a 0
7 % 3 // igual a 3