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

Ajuda com posso dirigir

Olá a todos, eu entendi o exercício usando o if e else eu quero apenas avançar um pouco mais levando em consideração futuros erros, a minha dúvida está em relação ao que a pessoa vai responder, por exemplo: o prompt diz para responder S ou N, mas podem responder s, sim, SIM, Sim, n, NAO,Não,NÃO etc. Eu usei lógico or || mas está imprimindo errado quando digo idade 17 e cnh N,não,NÃO, e também quando idade 17 e cnh S,SIM,sim nesse caso da idade 17 eu coloquei um alert, podem testar e me ajudar com uma solução. LEMBRANDO que é apenas um extra, pensando em entradas invalidas pelo usuário e tentando evita-las. Obrigado desde já =)

<meta charset="UTF-8">

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

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

    var idadeInformada = parseInt(prompt("Qual é sua idade?"));
    var temCarteiraCnh = prompt("Tem carteira de Habilitação? Responda S ou N");

    if(idadeInformada >= 18 && temCarteiraCnh == "s" || temCarteiraCnh == "S" || temCarteiraCnh == "sim" || temCarteiraCnh == "SIM"){

        mostra("Você tem permissão para dirigir!");

    } else if(idadeInformada >= 18 && temCarteiraCnh == "n" || temCarteiraCnh == "N" || temCarteiraCnh == "não" || temCarteiraCnh == "NÃO" || temCarteiraCnh == "Nao" || temCarteiraCnh == "Não") {

        mostra("Você não pode dirigir, é de maior mas não possui cnh");

    } else if(idadeInformada <= 17 && temCarteiraCnh == "s" || temCarteiraCnh == "S" || temCarteiraCnh == "sim" || temCarteiraCnh == "SIM"){

       alert("MENOR DE IDADE NÃO TEM CNH, FAVOR VERIFICAR A IDADE!");

    } else{

        mostra("Você não pode dirigir.");
    }
</script>
4 respostas

Boa noite, Jefferson!

O problema pode ser o uso de diferentes operações lógicas dentro do mesmo if(). Eu tentaria testar as lógicas a seguir.

if(idadeInformada >= 18){
     if(temCarteiraCnh == "s" || temCarteiraCnh == "S" || temCarteiraCnh == "sim" || temCarteiraCnh == "SIM"){
     }
     else if(temCarteiraCnh == "n" || temCarteiraCnh == "N" || temCarteiraCnh == "não" || temCarteiraCnh == "NÃO" || temCarteiraCnh == "Nao" || temCarteiraCnh == "Não"){
     }
}

OU

//Agrupei os operadores lógicos OR dentro de parênteses
if(idadeInformada >= 18 &&  (temCarteiraCnh == "s" || temCarteiraCnh == "S" || temCarteiraCnh == "sim" || temCarteiraCnh == "SIM")){
}
solução!

Agrupar os operadores lógicos OR dentro de parênteses funcionou!

<meta charset="UTF-8">
<script>
    function pulaLinha() {
        document.write("<br>");
    }
    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }
    var idadeInformada = parseInt(prompt("Qual é sua idade?"));
    var temCarteiraCnh = prompt("Tem carteira de Habilitação? Responda S ou N");

    if(idadeInformada >= 18 && (temCarteiraCnh == "s" || temCarteiraCnh == "S" || temCarteiraCnh == "sim" || temCarteiraCnh == "SIM" || temCarteiraCnh == "Sim")) {
        mostra("Você tem permissão para dirigir!");
    } 
    if(idadeInformada >= 18 && (temCarteiraCnh == "n" || temCarteiraCnh == "N" || temCarteiraCnh == "não" || temCarteiraCnh == "NÃO" || temCarteiraCnh == "Não" || temCarteiraCnh == "nao" || temCarteiraCnh == "NAO" || temCarteiraCnh == "Nao")) {
        mostra("Você não pode dirigir, é de maior mas não possui cnh");
    }
    if(idadeInformada <= 17 && (temCarteiraCnh == "s" || temCarteiraCnh == "S" || temCarteiraCnh == "sim" || temCarteiraCnh == "SIM" || temCarteiraCnh == "Sim")) {
       mostra("MENOR DE IDADE NÃO TEM CNH, FAVOR VERIFICAR A IDADE!");
    }
    if(idadeInformada <=17 && (temCarteiraCnh == "n" || temCarteiraCnh == "N" || temCarteiraCnh == "não" || temCarteiraCnh == "NÃO" || temCarteiraCnh == "Não" || temCarteiraCnh == "nao" || temCarteiraCnh == "NAO" || temCarteiraCnh == "Nao")) {
        mostra("Você não pode dirigir.");
    }
</script>

Opá, valew a ajudaYan nascimento e Jorge Heleno Da Silva Padilha me ajudaram bem a entender minha dúvida!

Fico feliz em poder ajudar =D e sinceramente também aprendi muito com seu post e seu código mais o comentário do Yan.