5
respuestas

[Duda] Puedo conducir

Por favor, quisiera aclarar esta duda. Por qué con este código al introducir una edad mayor a 18 años y colocar N en licencia no me da el mensaje "No puede conducir".

<meta charset="UTF-8">
<h1>PROGRAMA AUTORIZACIÓN DE LICENCIA</h1>

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

    function imprimir(frase) {
        document.write(frase);
        saltarLinea();
    }

    var edad = parseInt(prompt("¿Cuál es tu edad?"));
    var tieneLicencia = prompt("¿Tienes licencia? Responde S o N");

if (edad>=18) {

    if (tieneLicencia =="S") {

        imprimir("Puede conducir")

    }

}

else {

    imprimir ("No puede conducir")

}


</script>
5 respuestas

El else lo estas colocando fuera de tu segundo if.

<meta charset="UTF-8">
<h1>PROGRAMA AUTORIZACIÓN DE LICENCIA</h1>

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

    function imprimir(frase) {
        document.write(frase);
        saltarLinea();
    }

    var edad = parseInt(prompt("¿Cuál es tu edad?"));
    var tieneLicencia = prompt("¿Tienes licencia? Responde S o N");

if (edad>=18) {

    if (tieneLicencia =="S") {

        imprimir("Puede conducir")

    }



else {

    imprimir ("No puede conducir")
}
}


</script>

Hola, es porque falta una alternativa a cuando tiene 18 años y NO tiene licencia, puedes solucionarlo con un else más dentro de la condición de mayor de edad:

var edad = parseInt(prompt("¿Cuál es tu edad?"));
var tieneLicencia = prompt("¿Tienes licencia? Responde S o N");

if (edad >= 18) {
      if (tieneLicencia == "S") {
          imprimir("Puede conducir");
      } else {
          imprimir("No puede conducir");
      }
 } else {
      imprimir("No puede conducir");
 }    

Algo así podría solucionarlo

a mi me paso lo mismo, creo que es porque en el if no se valida la N, para solucionarlo yo pregunte primero si tenia licencia si.la respuesta es N inmediatamente me envia al else sin validar el resto.

PROGRAMA AUTORIZACIÓN DE LICENCIA

Si de acuerdo, yo lo solucione con un If, pero viendo esta idea con 2 else, es mucho mejor.


    var edad = parseInt(prompt("¿Cuál es tu edad?"));
    var tieneLicencia = prompt("¿Tienes licencia? Responde S o N");

    if (edad >= 18 && tieneLicencia == "S" ) {

        imprimir("Puedes conducir")
    }

    if (edad >= 18 && tieneLicencia == "N") {

        imprimir("NO puedes conducir")
    }

    if (edad < 18) {

    imprimir("NO puedes conducir")

    }

Mira lo que sucede es que lo que pones después de else solo se ejecuta si es que la primera condición fue falsa, pero en tu caso la primera condición es verdadera porque ya pusiste que tiene más de 18 años, entonces desde ese momento ya no se va a ejecutar lo que pongas después de else.

El problema con usar un if dentro de otro if es que te pueden surgir problemas como este pues aunque si se cumple la primera condición y ya no se cumple la segunda finalmente la primera si se marco ya como verdadera para evitar esto es que usamos el and que en Javascript se representa con && así solo se marcará la condición como verdadera si es que ya se cumplieron las 2 condiciones, y si alguna de las 2 no es verdadera se marcara como falso y si se ejecutara lo que pongas después de else.

No sé si tengas problemas con el inglés pero te dejo el significado de las expresiones, quedaría así:

If = Si && = y { = entonces else = de lo contrario

Si (condición verdadera) { entonces haz estas instrucciones } de lo contrario (o sea si fue falso){ haz esto otro }

Tu problema estuvo en que tu primera condición edad>= 18 si fue verdadera y cuando tu código llego a de lo contrario no se ejecutó porque eso solo pasa si fue falso.

Espero haberte ayudado.