2
respuestas

Mejorando el codigo

Hola, ya terminé el curso pero sentí duda desde un principio con esta actividad para llevarla mas allá y permitir al usuario poner sus limites, con limites me refiero a ingresar el numero que deseas multiplicar y cuantas veces quieres hacerlo. Y partir de ahí imprimir los resultados. Es decir, si quiero que la multiplicacion a imprimir sea 5x10; 5x20; 12x38; etc. El codigo funciona, el detalle es que me da un resultado mas del solicitado, si pido un 5x10; se imprime hasta 5x11; al estar en busqueda de "la perfeccion" esto ya me cansó porque no encuentro el error, o bien, la solucion. Les comparto el codigo, espero alguien me pueda apoyar. Saludos.

<meta charset="UTF-8">

<h1>
    TABLA DE MULTIPLICACION
</h1>

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

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

    var inicioTabla = parseInt(prompt("Ingrese el numero de la tabla de multiplicar con la que desea empezar"));
    var limiteDeTabla = parseInt(prompt("Ingrese el numero hasta el cual desea su tabla de multiplicar"));
    var conteo = 1
    var numFijo = inicioTabla
    var multiplicacion = 1

    while (multiplicacion <= (inicioTabla*limiteDeTabla)) {
        multiplicacion = (numFijo*conteo);
        imprimir ("El resultado es " + numFijo + " X " + conteo + " = " + multiplicacion);
        conteo++;
    }
    </script>
2 respuestas

Yo también estoy en las mismas bro, pero observando esto, creo yo esta al momento que le das la instruccion a lo que esta generando un bucle, veo que tienes las variables conteo y multiplicacion = 1, cuando estas mencionando igual que conteo ira en aumento como conteo++; siento yo que es cierta parte de instruccion.

Deja me ver que le muevo y vamos viendo a que solucion llegamos. Gracias por aportar bro

Hola José. Vi tu código y considero que el error se encuentra en como está estructurado el While. En este caso veo que el condicional compara el valor de multiplicación con el resultado de multiplicar la tabla por el limite. Además que multiplicacion no es aumentado dentro del while, sino que se le asigna otro valor que depende de la variable conteo.

Analizando el ejemplo concreto de que sea la tabla del 5 hasta el 2. Tenemos que:

En la primera evaluación la variable multiplicación tiene valor 1 <= 10. Es verdadero asi que entra al while. Y se le asigna a multiplicacion el valor de 5. En la segunda evaluación la variable multiplicación tiene valor 5 <= 10. Es verdadero asi que entra al while. Y ahora se asigna a multiplicacion el valor de 10. En la tercera evaluación la variable multiplicación tiene valor 10 <= 10. Es verdadero asi que entra al while. Ahora multiplicacion tiene valor de 15, y ya no entrara mas al while.

Para corregir el codigo bastaria con cambiar el condicional de <= (menor o igual que) por solo < (menor que).

No obstante mi recomendacion seria eliminar la variable numFijo ya que no le veo real utilidad, y usar directamente la variable inicioTabla. Y en el condicional del while comparar conteo con limiteDeTabla, tal que quedaria de la siguiente manera:

    while (conteo <= limiteDeTabla) {
        multiplicacion = (inicioTabla*conteo);
        imprimir ("El resultado es " + inicioTabla + " X " + conteo + " = " + multiplicacion);
        conteo++;
    }

Saludos.