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

Menor de 18 não deveria responder sobre carteira...

Boa tarde,

Comecei o meu if tentando identificar os menores de 18 anos. No entanto, com essa hipótese verdadeira, não queria que o usuário recebesse a pergunta da carteira, mas tem dado errado, pois o programa pergunta assim mesmo.

Segue o código:

<meta charset="UTF-8">

<script>
    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    var idade = parseInt(prompt("Qual é sua idade?"));
    var temCarteira = prompt("Tem carteira? Responda S ou N");

    if (idade <= 17) {

        mostra ("Não pode dirigir!");

    }

    if (idade >= 18 && temCarteira == "S") {

        mostra ("Pode dirigir!");

    } else {

        mostra("Não pode dirigir!");

    }

</script>

Mesmo invertendo os ifs, continua não funcionando. Por quê?

Obrigada,

5 respostas

Boa noite Juliana,

Segue uma solução possível para o seu problema. Utilizei o recurso de colocar ifs dentro de ifs. Existem outras soluções que você aprenderá num futuro próximo, mas no momento essa é suficiente. Caso fique com alguma dúvida do código abaixo mande uma mensagem por aqui mesmo.

function pulaLinha() {
  document.write("<br>");
}

function mostra(frase) {
  document.write(frase);
  pulaLinha();
}

var idade = parseInt(prompt("Qual é sua idade?"));
// temCarteira começa com N
var temCarteira = "N";

if (idade <= 17) {

  //caso seja menor de 18 o código acaba aqui
  mostra ("Não pode dirigir!");

} else {

  // Esse trecho de código só é executado se a idade for maior que 17, 
  // aqui faremos a pergunta sobre a carteira
  temCarteira = prompt("Tem carteira? Responda S ou N");

  if (idade >= 18 && temCarteira == "S") {

    mostra ("Pode dirigir!");

  } else {

    mostra("Não pode dirigir!");

  }
}

Abraços

Oi juliana.pellegrinetti uma outra solução seria a seguinte:

<meta charset="UTF-8">

<script>
    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    var idade = parseInt(prompt("Qual é sua idade?"));
        if (idade >= 18) {
            var temCarteira = prompt("Tem carteira? Responda S ou N");
                if (temCarteira == "S") {
                    mostra ("Pode dirigir!");
                }else{
                    mostra ("Não Pode dirigir!");
                }
        }else{
        mostra ("Não Pode dirigir!");
        }


</script>

Espero ter ajudado e bons estudos.

Coloquei o meta charset e o script, mas o código do Vinicius não funcionou.

Já o do Maison sim. Só para ficar claro para mim, vi que tem que dois elses seguidos. O penúltimo entendo que é caso contrário à hipótese do "S" da linha anterior. Mas a que se refere o último else? Ao primeiro if?

Obrigada,

solução!

Oi juliana.pellegrinetti lendo a lógica ou traduzindo fica assim:

Você pergunta a idade.
    Se a idade for maior ou igual a 18.
            Você pergunta se tem carteira.
                    Se tem carteira, pode dirigir
                        Senão não pode
    Se a idade for menor que 18
        Também não pode.

Observe a indentação ela auxilia a entender melhor.

Observe também que o primeiro if contém outro if aninhado a ele(dentro dele) só depois ele fecha.

Essa é só mais uma forma de resolver.

Espero ter ajudado e bons estudos.

Obrigada!