2
respostas

Posso dirigir

Olá, pessoal. No caso, eu pensei no problema de uma forma diferente. Da forma que pensei, há 4 possíveis ocasiões... Que são:

  1. A pessoa tem idade para dirigir e já tem a carteira
  2. A pessoa tem idade para dirigir, mas não tem a carteira ainda
  3. A pessoa não tem idade para dirigir, mas tem a carteira
  4. A pessoa não tem idade para dirigir e não tem a carteira

Como há a possibilidade das 4 ocasiões acontecerem, eu coloquei 4 if's (não sei se realmente é necessário, mas, no meu entendimento, é.)

TESTE: se coloco "18 anos e N" -> Parabéns, você está apta a dirigir e não tem uma carteira de motoristaVocê não tem idade para ter uma carteira. TESTE1: se coloco "18 anos e S" -> Parabéns, você está apta a dirigir e já tem uma carteira de motoristaVocê não tem idade para ter uma carteira, por isso, terei que lhe prender. TESTE2: se coloco "17 anos e N" -> Você não tem idade para ter uma carteira. TESTE3: se coloco "17 anos e S" -> Você não tem idade para ter uma carteira, por isso, terei que lhe prender.

Escrevi o código dessa forma e ele está rodando, mas com erro. O que posso fazer para consertar isso?

2 respostas

Olá, Davi, tudo bem?

Se você quer dar uma resposta personalizada para cada situação, então sim, é necessário escrever uma condição de teste para cada uma! Seu raciocínio está correto :)

Por outro lado, se você quer apenas dizer se a pessoa está apta a dirigir ou não (como o instrutor faz), então basta uma única verificação com if (se a pessoa é maior de idade E tem carteira) e um bloco else para o caso em que a pessoa não pode dirigir.

Sobre o seu código, existem algumas situações em que você está mostrando na tela duas respostas ao mesmo tempo. Por exemplo, ao digitar que a idade é 18 e que não tem carteira, aparece o seguinte:

Parabéns, você está apta a dirigir e não tem uma carteira de motoristaVocê não tem idade para ter uma carteira.

Vamos então analisar no código o que leva a mostrar essas duas respostas. Temos esse if:

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

    document.write("Parabéns, você está apta a dirigir e já tem uma carteira de motorista");

  }

E esse if:

  if (idade <= 18 && temCarteira == "N") {

    document.write("Você não tem idade para ter uma carteira.");

  }

Note que a frase de baixo também está sendo imprimida porque a condição do if também permite a idade 18! A condição idade <= 18 também é cumprida. Então basta mudar o operador <= para <, para que essa frase seja mostrada apenas se a idade for menor que 18.

Basicamente, o código dos seus dois últimos ifs devem ficar assim:

  if (idade < 18 && temCarteira == "S") {  // Alterei para menor que 18

    document.write("Você não tem idade para ter uma carteira, por isso, terei que lhe prender.");

  }

  if (idade < 18 && temCarteira == "N") {  // Alterei para menor que 18

    document.write("Você não tem idade para ter uma carteira.");

  }

(Aliás, adorei a resposta que disse que ia prender haha)

Por fim, uma última dica: quando você for escrever código aqui no fórum, você deve deixá-lo dentro de um bloco de código, senão os outros alunos e alunas não conseguirão visualizá-lo! O bloco de código começa com três crases seguidas e termina com mais três crases seguidas, assim:

Print de bloco de código no campo de texto do fórum, começando com três aspas seguidas e terminando com mais três aspas seguidas em baixo.

Por exemplo, um código HTML:

Exemplo de código HTML dentro do bloco de código, com as tags meta, script e código javascript dentro da tag script. E junto das primeiras três crases, foi digitado "HTML". O código é realçado com algumas cores, de acordo com a linguagem especificada.

Note que você pode escrever o nome da linguagem junto com as três primeiras crases para realçar o código!

Você também pode clicar no ícone </> na barra de ícones para gerar um bloco de código.

Se tiver qualquer dúvida estaremos aqui para te auxiliar! Bons estudos! :)