3
respuestas

De la solución, solo funciona el útlimo código

Hola, cómo están? Tengo la siguiente duda, yo escribí un código que tiene exactamente el mismo problema que las dos primeras soluciones que plantea Christian. Estos dos códigos (y el mío) muestran los mensajes en los casos que uno ingrese una edad mayor o igual a 18 y S (imprime Puedes conducir) o bien, una edad menor a 18 y S (imprime No puedes conducir). Sin embargo, en el caso de alguien mayor a 18 que NO tienen licencia, al ingresar por ejemplo edad 19, y N, NO se imprime No puedes conducir; el programa queda en blanco. La única solución que resuelve este problema es la última, que imprime una respuesta en todos los casos. Me podrán ayudar a entender a qué se debe esto? En los dos primeros casos, habría que definir algo más? Muchas gracias!

3 respuestas

Hola, es tal cual lo describís: falta en los 2 primeros casos contemplar que sea >=18 pero que no tenga licencia. Se podría modificar la primer solución así:

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

en la 2da. solución la modificación sería:

if(edad < 18 || tieneLicencia == "N") {  //si la edad es menor a 18 "o" no tiene licencia. || es la condicion OR
        imprimir("No puedes conducir");
    }

para simplificar no copié el resto en ambos códigos sino sólo la parte que modificaría. Salu2!

Hola Adrián, gracias por tu respuesta! Voy a probar tus modificaciones. Te copio otro código que escribí que tiene otro resultado rarísimo, funciona bien en todos los casos menos en el caso mayor o igual a 18 y S, imprime las dos leyendas!! Jaja

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 && tieneLicencia == "S") {

imprimir("Usted puede conducir");

}

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

imprimir("Usted no puede conducir");

}

else {

    imprimir ("Usted no puede conducir");

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

imprimir("Usted puede conducir");

}

else if (edad >= 18 && tieneLicencia == "N") { //agregué este "else" antes del if, ahí debería andar bien...igual obvio no es lo óptimo y digamos pregunta la                                                                                 //edad de gusto cuando lo importante es que o no tenga licencia o que sea menor de 18 
                                                                                //así que si quitas todo este "else if" es la solución óptima que ya dijeron
imprimir("Usted no puede conducir");

}

else {

    imprimir ("Usted no puede conducir");

}