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

Duvida Atividade 12 (Será que posso dirigir?)

<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" || temCarteira == "s"){
        mostra("Pode dirigir");
    } else if(idade < 18){
        mostra("Não pode dirigir")
    }

</script>

Então, eu queria fazer com que o código fizesse aparecer "Não pode dirigir" assim que eu digitasse um valor menor que 18, porém já vi os outros tópicos que abordam essa dúvida e nenhum conseguiu ajudar. Será que tem como dar uma luz?

4 respostas

Oi, Paulo, tudo bem?

A questão está no else if, porque ele cai em outra condição. Mas nesse problema, nós temos dois casos, certo? Ou o usuário é de maior de idade e tem carteira ou o usuário é menor de idade e não pode dirigir. Então, nesse caso, só precisa usar o else.

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

Ou seja, se tem 18 anos ou mais de 18 e tem carteira, Pode dirigir, senão, em todos os outros casos, Não pode dirigir.

Espero ter te ajudado :}

Olá Lais, ainda sim meu código apresenta a mensagem perguntando se o usuário tem CNH mesmo que eu coloque um número abaixo de 18, eu já tentei várias formas e até agora nada :/

solução!

Olá Vitor, tudo bem?

Pelo que entendi, o código que você precisa é esse:

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

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

Ele pede a idade, checa se é menor que 18. Caso verdadeiro, exibe que não pode dirigir. Caso contrário, ou seja, ele possui 18 anos ou mais, pergunta se possui carteira. Caso a resposta seja positiva, exibe que pode dirigir, caso contrário, exibe que não.

Apesar de possível e funcional, esse código não é muito bom. Eu entendi sua ideia, afinal, se você possui menos de 18 anos, nem carteira poderia ter, logo perguntar se uma pessoal menor de 18 anos possui CNH é desnecessário.

Mas, no ponto de vista de código, é ruim você ter em dois lugares diferentes verificações que possuem um mesmo fim: "Você não pode dirigir". A menos que seja extremamente necessário isso, o ideal é que você possua todas as variáveis antes de começar a analisar, pois assim seu código tende a ficar menor.

Era isso mesmo que você queria?

Fala Vitor beleza ?

Uma maneira de fazer é colocar a lógica da carteira dentro de uma função e chamar essa função durante seu if.

Se a idade for maior que 18, executamos a função temCarteira que vai perguntar se temos ou não carteira.

Se a idade for menor que 18 ela executa a função mostra

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

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

    function temCarteira(){
        var temCarteira = prompt("Tem carteira? Responda S ou N");

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

    var idade = parseInt(prompt("Qual é sua idade?"));


    if(idade >= 18){
        temCarteira()
    } else {
        mostra("Não pode dirigir")
    }