Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
5
respuestas

[Duda] PROGRAMA DE CONDUCIR

MI DUDA ES AL MOMENTO DE INTERACTUAR CON EL USUARIO; QUE TAL SI EL USUARIO DECIDE ESCRIBIR OTRA COSA QUE NO SEA UN N O UN S COMO RESPUESTA COMO EVITO ESA SITUACION? Y COMO DISTINGO DE UNA S MAYUSCULA A UNA S MINUSCULA; AGRADECERE SU AYUDA... AQUI MI CODIGO QUE YO SE QUE SE PUEDE MEJORAR AUN MAS..

<meta charset="UTF-8">

<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 <= 17) {        

        imprimir ("no tiene edad suficiente para conducir");

    }

    if (edad >=18) {

        if(tieneLicencia == "s") {

            imprimir ("Usted si puede conducir");

        }

        else {

            imprimir ("Usted no puede conducir");
        }

    }
5 respuestas
solución!

Podriamos hacer algo como esto

    var validChars = false
    var tieneLicencia;

    while(validChars == false ){
        tieneLicencia = prompt("¿Tienes licencia? Responde S o N");

        if(tieneLicencia == "s" || tieneLicencia == "S" || tieneLicencia == "n" || tieneLicencia == "N"){
            break;

        }else{
            alert("Caracter no válido. Intente de nuevo.");
        }
    }

Es decir comparamos la respuesta de prompt con los posibles resultados que queremos s, S, n y N si la respuesta es difrente a estos caracteres seguimos ejecutando el while, solo hasta que alguna respuesta sea alguno de los caracteres validos rombe el while y seguimos con el programa.

El programa comopleto seria así.

<meta charset="UTF-8">

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

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

    var edad = parseInt(prompt("¿Cuál es tu edad?"));



    var validChars = false
    var tieneLicencia;

    while(validChars == false ){
        tieneLicencia = prompt("¿Tienes licencia? Responde S o N");

        if(tieneLicencia == "s" || tieneLicencia == "S" || tieneLicencia == "n" || tieneLicencia == "N"){
            break;

        }else{
            alert("Caracter no válido. Intente de nuevo.");
        }
    }


    if (edad <= 17) {        

        imprimir ("no tiene edad suficiente para conducir");

    }

    if (edad >=18) {

        if(tieneLicencia == "s") {

            imprimir ("Usted si puede conducir");

        }

        else {

            imprimir ("Usted no puede conducir");
        }

    }

</script>

Si crees que mi respuesta te ayudo márcala como solución. Saludos.

*Gracias, sinceramente aun no llego al tema del while pero copie tu codigo y lo ejecute hay un detalle que cuando pongo la S mayuscula aun teniendo la edad mayor a 18 años aparece el mensaje que no se puede conducir, ahora mi duda es que parte del codigo hay que corregir, ya lo intente pero no logro saber donde lo puedo corregir, saludos y gracias almenos ya despejaste mi duda de no meter otro caracter que no sea s o n *

Organice un poco el código y le puse comentarios para que sea más legible. Me comentas cualquier cosa.

<meta charset="UTF-8">

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

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

    //---->PROGRAMA
    //Variables
    var validChars = false
    var tieneLicencia;
    var edad;

    //Averiguar edad
    edad = parseInt(prompt("¿Cuál es tu edad?"));

    if(edad >= 18){
        //Si es mayor o igual a 18 preguntamos si tiene licencia
        //Averiguar si tiene licencia
        while(validChars == false ){
            tieneLicencia = prompt("¿Tienes licencia? Responde S o N");

            if(tieneLicencia == "s" || tieneLicencia == "S" || tieneLicencia == "n" || tieneLicencia == "N"){
                break;

            }else{
                alert("Caracter no válido. Intente de nuevo.");
            }
        }

        //Averiguar si tiene liencia
        if(tieneLicencia == "s" || tieneLicencia == "S"){
            imprimir("Usted Si puede conducir.");

        }else{
            imprimir("Usted No puede conducir por no tener licencia.");
        }


    }else{
        //Si no tiene 18 de plano no puede conducir y no es necesario preguntar por la licencia.
        alert("No tiene la edad necesaria para conducir.");
    }

</script>

Gracias por tu apoyo me quedo claro, saludos

Me surgió la misma interrogante, gracias por el apoyo.