2
respostas

Posso dirigir mesmo com habilitação N

Digito N na habilitação, mas sempre mostra que posso dirigir. Qual o meu erro?

<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 >= 18 && temCarteira == "S");{

        mostra("Você pode dirigir")
    } 
    if (idade <18) {
        mostra("Você não pode dirigir")
    }




</script>
2 respostas

Fala cara, estou só aprendendo, mas acho que consegui identificar o seu erro!

Acho que faltou a condicional "else", então quando você digita N ou S o resultado é o mesmo, pois a condição que você colocou é apenas colocar qualquer uma dessas respostas. O programa entende apenas dessa forma "se ele já é maior de 18 pode dirigir", e te dá a resposta, caso colocasse a condicional "else", o programa entenderia como "Já que ele não respeitou as duas condições devo dar outra resposta".

Não sei se fui capaz de me fazer entender, mas de qualquer forma, vou colocar o meu trecho do código aqui para tentar te ajudar:

 if (idade >=18 && temCarteira == "S" || "s"){
         mostra("Pode dirigir!");
    }   else{
        mostra("Não pode dirigir")
    }

No meu código eu coloquei as duas barras em pé (||), pois elas funcionam como uma espécie de "Ou", tornando possível que a respostas seja feita com a letra maiúscula ou não.

Abraços!

Fala Hugo, então, temos um pequeno erro no código:

if (idade >= 18 && temCarteira == "S")`**;**`{
    mostra("Você pode dirigir")
} 

Você tirando essa parte já vai corrigir o problema da pessoa não ter a carteira e mesmo assim poder dirigir. Agora, é necessário você informar para o programa o que ele deve fazer se a pessoa não tem carteira:

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

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

    mostra("Você pode dirigir");
} 
if (idade <18 || temCarteira == "N") {
        mostra("Você não pode dirigir");
}

Ou pra ficar ainda mais bonito:

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

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

    mostra("Você pode dirigir");
} else {
        mostra("Você não pode dirigir");
}

Espero ter ajudado Hugo, sobre as letras serem maiúsculas ou minúsculas nas respostas, acredito que você aprenderá como lhe dar com isso posteriormente, então por enquanto não esquenta! Bons estudos!