elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  javascript
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: javascript  (Leído 6,598 veces)
thebus4k

Desconectado Desconectado

Mensajes: 39


Ver Perfil
javascript
« en: 10 Mayo 2020, 19:19 pm »

Hola a todos, tengo que hacer un script que calcule el factorial de un número.
Aparte debe mostrar por consola toda la operación, por ejemplo si se introduce un 4:
1.Calculando Factorial de 4
2.Operación = 4x3x2x1
3.Factorial = 24

La parte del script que lo calcule ya lo tengo y funciona
Código:

<script>
var n1,n2;
    n1=parseInt(prompt("Introduce un número"));
    n2=1;
if(n1<0){
    while(n1<0){
        n1=parseInt(prompt("El valor del número introducido debe ser mayor que 0"));
    }
}
while (n1>1){
    n2=n1*n2;
    n1=n1-1;
}

document.write("El factorial es: "+n2);
</script>

La parte de la consola no sé como implementarlo.

Espero que alguien pueda ayudarme, un saludo.


« Última modificación: 10 Mayo 2020, 20:57 pm por thebus4k » En línea

rub'n


Desconectado Desconectado

Mensajes: 1.218


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: javascript
« Respuesta #1 en: 11 Mayo 2020, 03:53 am »

Hola a todos, tengo que hacer un script que calcule el factorial de un número.
Aparte debe mostrar por consola toda la operación, por ejemplo si se introduce un 4:
1.Calculando Factorial de 4
2.Operación = 4x3x2x1
3.Factorial = 24

La parte del script que lo calcule ya lo tengo y funciona
Código:

<script>
var n1,n2;
    n1=parseInt(prompt("Introduce un número"));
    n2=1;
if(n1<0){
    while(n1<0){
        n1=parseInt(prompt("El valor del número introducido debe ser mayor que 0"));
    }
}
while (n1>1){
    n2=n1*n2;
    n1=n1-1;
}

document.write("El factorial es: "+n2);
</script>

La parte de la consola no sé como implementarlo.

Espero que alguien pueda ayudarme, un saludo.

usad console.log()

https://developer.mozilla.org/es/docs/Web/API/Console/log

recuerda este es el foro de java, un moderador deberia mover esto.


« Última modificación: 11 Mayo 2020, 03:54 am por rub'n » En línea

rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen king
@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
Re: javascript
« Respuesta #2 en: 11 Mayo 2020, 04:08 am »

Código
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Factorial</title>
  6. </head>
  7. <body>
  8. <script>
  9. /* Declara 2 variables y las define en una sola expresión */
  10. var n1 = prompt("Introduce un número"),
  11. n2 = 1;
  12.  
  13. /* Declara otra variable. Aquí para indicar hoisting */
  14. var div;
  15.  
  16. /* Muestra en consola que puso el usuario. */
  17. console.log("El usuario ha introducido:" + n1);
  18.  
  19. /*
  20. Mientras el numero sea negativo, sea NaN, contenga espacios, sea null o un string sin valor ... */
  21. while(n1 < 0 || isNaN(+n1) || /\s/gm.test(n1) || n1 === null || n1 === "") {
  22.  
  23. console.log("El número " + n1 + " introducido no es factorizable.");
  24. n1 = prompt("El número introducido no es factorizable.\nInténtalo de nuevo");
  25. }
  26.  
  27. /* Coherce a número. */
  28. n1 = +n1;
  29.  
  30. while(n1) {
  31. n2 = n1 * n2;
  32. --n1;
  33. console.log("Valor de n2 = " + n2 + "\nValor de n1 = " + n1);
  34. }
  35.  
  36. div = document.createElement("div");
  37. div.id = "respuesta";
  38. div.innerHTML = "El factorial es: " + n2;
  39.  
  40. document.body.appendChild(div);
  41.  
  42. </script>
  43. </body>
  44. </html>
Te modifiqué un poco el código. Los temas de javascript van a desarollo web, Java no tiene lo más minimo que ver con javascript. Se le puso ese nombre para aprovecharse del tirón comercial de Java.
En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

thebus4k

Desconectado Desconectado

Mensajes: 39


Ver Perfil
Re: javascript
« Respuesta #3 en: 11 Mayo 2020, 13:20 pm »

Código
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Factorial</title>
  6. </head>
  7. <body>
  8. <script>
  9. /* Declara 2 variables y las define en una sola expresión */
  10. var n1 = prompt("Introduce un número"),
  11. n2 = 1;
  12.  
  13. /* Declara otra variable. Aquí para indicar hoisting */
  14. var div;
  15.  
  16. /* Muestra en consola que puso el usuario. */
  17. console.log("El usuario ha introducido:" + n1);
  18.  
  19. /*
  20. Mientras el numero sea negativo, sea NaN, contenga espacios, sea null o un string sin valor ... */
  21. while(n1 < 0 || isNaN(+n1) || /\s/gm.test(n1) || n1 === null || n1 === "") {
  22.  
  23. console.log("El número " + n1 + " introducido no es factorizable.");
  24. n1 = prompt("El número introducido no es factorizable.\nInténtalo de nuevo");
  25. }
  26.  
  27. /* Coherce a número. */
  28. n1 = +n1;
  29.  
  30. while(n1) {
  31. n2 = n1 * n2;
  32. --n1;
  33. console.log("Valor de n2 = " + n2 + "\nValor de n1 = " + n1);
  34. }
  35.  
  36. div = document.createElement("div");
  37. div.id = "respuesta";
  38. div.innerHTML = "El factorial es: " + n2;
  39.  
  40. document.body.appendChild(div);
  41.  
  42. </script>
  43. </body>
  44. </html>
Te modifiqué un poco el código. Los temas de javascript van a desarollo web, Java no tiene lo más minimo que ver con javascript. Se le puso ese nombre para aprovecharse del tirón comercial de Java.

Muchas gracias por responder,  la próxima vez que tenga otra pregunta lo pondré es su debido foro.

Tengo otra cuestión.
Como puedo separa el contenido del script de forma que queden 2 archivos js, el primero de ellos solo debe tener el cálculo del factorial y el otro que contenga la parte de la consola?
« Última modificación: 11 Mayo 2020, 16:54 pm por thebus4k » En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
Re: javascript
« Respuesta #4 en: 11 Mayo 2020, 17:26 pm »

Debes crear una función para factorizar. Le añado un tercer parámetro opcional para ver las operaciones de distintas formas.

La comprobación de si lo introducido por el usuario es válido también lo metería aquí.

Código
  1. function Factorizar(num1, num2, info) {
  2.  
  3. if(num1 < 0 || isNaN(+num1) || /\s/gm.test(num1) || num1 === null || num1 === "") {
  4. throw new error("El número no puede ser factorizado");
  5. }
  6.  
  7. var numero1 = num1, numero2 = num2;
  8. while(n1) {
  9. num2 = num1 * num2;
  10. --num1;
  11. switch(info) {
  12. case 1:
  13. console.log(numero1 + " - " + numero2 + " es igual a " + num2);
  14. break;
  15.  
  16. case 2:
  17. alert(numero1 + " - " + numero2 + " es igual a " + num2);
  18. break;
  19. }
  20. }
  21. }

Este archivo lo guardas tal cual, sin las etiquetas <script> como Factorizar.js


Ahora, donde hacías la factorización lo remplazas por la llamada a la nueva función. Lo guardas como codigo.js o main.js, index.js, programaFactorizar.js... Algo que se pueda deducir que es el script.

Código
  1. /* Declara 2 variables y las define en una sola expresión */
  2. var n1 = prompt("Introduce un número"),
  3. n2 = 1;
  4.  
  5. /* Declara otra variable. Aquí para indicar hoisting */
  6. var div;
  7.  
  8. /* Muestra en consola que puso el usuario. */
  9. console.log("El usuario ha introducido:" + n1);
  10.  
  11. /*
  12. Mientras el numero sea negativo, sea NaN, contenga espacios, sea null o un string sin valor ... */
  13. while(n1 < 0 || isNaN(+n1) || /\s/gm.test(n1) || n1 === null || n1 === "") {
  14.  
  15. console.log("El número " + n1 + " introducido no es factorizable.");
  16. n1 = prompt("El número introducido no es factorizable.\nInténtalo de nuevo");
  17. }
  18.  
  19. /* Coherce a número. */
  20. n1 = +n1;
  21.  
  22. Factorizar(n1, n2, 1);
  23.  
  24. div = document.createElement("div");
  25. div.id = "respuesta";
  26. div.innerHTML = "El factorial es: " + n2;
  27.  
  28. document.body.appendChild(div);

Por último añades los scripts a tu html, a mi me gusta meter las librerías y funciones puras al final de la etiqueta head y el código al final del body.

Código
  1. <!DOCTYPE html>
  2. <meta charset="utf-8">
  3. <title>Factorial</title>
  4. <script src="Factorizar.js"></script>
  5. </head>
  6. <script src="codigo.js"></script>
  7. </body>
  8. </html>

 
En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

thebus4k

Desconectado Desconectado

Mensajes: 39


Ver Perfil
Re: javascript
« Respuesta #5 en: 11 Mayo 2020, 17:58 pm »

Debes crear una función para factorizar. Le añado un tercer parámetro opcional para ver las operaciones de distintas formas.

La comprobación de si lo introducido por el usuario es válido también lo metería aquí.

Código
  1. function Factorizar(num1, num2, info) {
  2.  
  3. if(num1 < 0 || isNaN(+num1) || /\s/gm.test(num1) || num1 === null || num1 === "") {
  4. throw new error("El número no puede ser factorizado");
  5. }
  6.  
  7. var numero1 = num1, numero2 = num2;
  8. while(n1) {
  9. num2 = num1 * num2;
  10. --num1;
  11. switch(info) {
  12. case 1:
  13. console.log(numero1 + " - " + numero2 + " es igual a " + num2);
  14. break;
  15.  
  16. case 2:
  17. alert(numero1 + " - " + numero2 + " es igual a " + num2);
  18. break;
  19. }
  20. }
  21. }

Este archivo lo guardas tal cual, sin las etiquetas <script> como Factorizar.js


Ahora, donde hacías la factorización lo remplazas por la llamada a la nueva función. Lo guardas como codigo.js o main.js, index.js, programaFactorizar.js... Algo que se pueda deducir que es el script.

Código
  1. /* Declara 2 variables y las define en una sola expresión */
  2. var n1 = prompt("Introduce un número"),
  3. n2 = 1;
  4.  
  5. /* Declara otra variable. Aquí para indicar hoisting */
  6. var div;
  7.  
  8. /* Muestra en consola que puso el usuario. */
  9. console.log("El usuario ha introducido:" + n1);
  10.  
  11. /*
  12. Mientras el numero sea negativo, sea NaN, contenga espacios, sea null o un string sin valor ... */
  13. while(n1 < 0 || isNaN(+n1) || /\s/gm.test(n1) || n1 === null || n1 === "") {
  14.  
  15. console.log("El número " + n1 + " introducido no es factorizable.");
  16. n1 = prompt("El número introducido no es factorizable.\nInténtalo de nuevo");
  17. }
  18.  
  19. /* Coherce a número. */
  20. n1 = +n1;
  21.  
  22. Factorizar(n1, n2, 1);
  23.  
  24. div = document.createElement("div");
  25. div.id = "respuesta";
  26. div.innerHTML = "El factorial es: " + n2;
  27.  
  28. document.body.appendChild(div);

Por último añades los scripts a tu html, a mi me gusta meter las librerías y funciones puras al final de la etiqueta head y el código al final del body.

Código
  1. <!DOCTYPE html>
  2. <meta charset="utf-8">
  3. <title>Factorial</title>
  4. <script src="Factorizar.js"></script>
  5. </head>
  6. <script src="codigo.js"></script>
  7. </body>
  8. </html>

 

El primero de los códigos me genera 5 errores, en la línea 1, 4, 8, 13 y 17.
En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
Re: javascript
« Respuesta #6 en: 11 Mayo 2020, 19:08 pm »

Código
  1. function Factorizar(num1, num2, info) {
  2.  
  3. if(num1 < 0 || isNaN(+num1) || /\s/gm.test(num1) || num1 === null || num1 === "") {
  4. throw new error("El número no puede ser factorizado");
  5. }
  6.  
  7. var numero1 = num1, numero2 = num2;
  8. while(num1) {
  9. num2 = num1 * num2;
  10. --num1;
  11. switch(info) {
  12. case 1:
  13. console.log(numero1 + " - " + numero2 + " es igual a " + num2);
  14. break;
  15.  
  16. case 2:
  17. alert(numero1 + " - " + numero2 + " es igual a " + num2);
  18. break;
  19. }
  20. }
  21. return num2
  22. }

Código
  1. /* Declara 2 variables y las define en una sola expresión */
  2. var n1 = prompt("Introduce un número"),
  3. n2 = 1;
  4.  
  5. /* Declara otra variable. Aquí para indicar hoisting */
  6. var div;
  7.  
  8. /* Muestra en consola que puso el usuario. */
  9. console.log("El usuario ha introducido:" + n1);
  10.  
  11. /*
  12. Mientras el numero sea negativo, sea NaN, contenga espacios, sea null o un string sin valor ... */
  13. while(n1 < 0 || isNaN(+n1) || /\s/gm.test(n1) || n1 === null || n1 === "") {
  14.  
  15. console.log("El número " + n1 + " introducido no es factorizable.");
  16. n1 = prompt("El número introducido no es factorizable.\nInténtalo de nuevo");
  17. }
  18.  
  19. /* Coherce a número. */
  20. n1 = +n1;
  21.  
  22. n2 = Factorizar(n1, n2, 1);
  23.  
  24. div = document.createElement("div");
  25. div.id = "respuesta";
  26. div.innerHTML = "El factorial es: " + n2;
  27.  
  28. document.body.appendChild(div);

Pregunta lo que no entiendas. Con copiar y pegar no aprendes nada. Entregarás el trabajo y el día que te toque examen irás tan atrasado que no te enterarás de nada.


Deberías ir siempre 2 pasos por delante de la clase para poder preguntar dudas en clase en vez de no entender nada mirarlo en casa y no tener a quien preguntarle.
En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

thebus4k

Desconectado Desconectado

Mensajes: 39


Ver Perfil
Re: javascript
« Respuesta #7 en: 11 Mayo 2020, 20:29 pm »

Código
  1. function Factorizar(num1, num2, info) {
  2.  
  3. if(num1 < 0 || isNaN(+num1) || /\s/gm.test(num1) || num1 === null || num1 === "") {
  4. throw new error("El número no puede ser factorizado");
  5. }
  6.  
  7. var numero1 = num1, numero2 = num2;
  8. while(num1) {
  9. num2 = num1 * num2;
  10. --num1;
  11. switch(info) {
  12. case 1:
  13. console.log(numero1 + " - " + numero2 + " es igual a " + num2);
  14. break;
  15.  
  16. case 2:
  17. alert(numero1 + " - " + numero2 + " es igual a " + num2);
  18. break;
  19. }
  20. }
  21. return num2
  22. }

Código
  1. /* Declara 2 variables y las define en una sola expresión */
  2. var n1 = prompt("Introduce un número"),
  3. n2 = 1;
  4.  
  5. /* Declara otra variable. Aquí para indicar hoisting */
  6. var div;
  7.  
  8. /* Muestra en consola que puso el usuario. */
  9. console.log("El usuario ha introducido:" + n1);
  10.  
  11. /*
  12. Mientras el numero sea negativo, sea NaN, contenga espacios, sea null o un string sin valor ... */
  13. while(n1 < 0 || isNaN(+n1) || /\s/gm.test(n1) || n1 === null || n1 === "") {
  14.  
  15. console.log("El número " + n1 + " introducido no es factorizable.");
  16. n1 = prompt("El número introducido no es factorizable.\nInténtalo de nuevo");
  17. }
  18.  
  19. /* Coherce a número. */
  20. n1 = +n1;
  21.  
  22. n2 = Factorizar(n1, n2, 1);
  23.  
  24. div = document.createElement("div");
  25. div.id = "respuesta";
  26. div.innerHTML = "El factorial es: " + n2;
  27.  
  28. document.body.appendChild(div);

Pregunta lo que no entiendas. Con copiar y pegar no aprendes nada. Entregarás el trabajo y el día que te toque examen irás tan atrasado que no te enterarás de nada.


Deberías ir siempre 2 pasos por delante de la clase para poder preguntar dudas en clase en vez de no entender nada mirarlo en casa y no tener a quien preguntarle.

Entiendo todo lo que me explicas, pero la función que has creado en el primer código como lo implemento en el segundo codigo?
Y lo de la comprobación que me indicas en el código 1 como lo pongo también?
« Última modificación: 11 Mayo 2020, 20:32 pm por thebus4k » En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
Re: javascript
« Respuesta #8 en: 11 Mayo 2020, 20:37 pm »

La función ya tiene la llamada hecha en la línea 22.


Está todo hecho.
En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

thebus4k

Desconectado Desconectado

Mensajes: 39


Ver Perfil
Re: javascript
« Respuesta #9 en: 11 Mayo 2020, 21:19 pm »

La función ya tiene la llamada hecha en la línea 22.


Está todo hecho.

Me he explicdo mal, lo siento
A ver tengo que hacer el programa de la factorización para que se lea el numero entero positivo y si no se introducen un número de ese tipo volver a pedirlo, a partir de este js crear el segundo js para que se pidan los datos y se imprima por consola.

Código:

function Factorial(n) {
    var ans=1;
    for (var i = 2; i <= n; i++)
 ans = ans * i;
    return ans;
}
 
Este sería el código de la función, faltaría el segundo js.
Puedes echarme una mano?
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
javascript
Desarrollo Web
BeLGaRioN 1 2,130 Último mensaje 2 Junio 2011, 14:30 pm
por D4RIO
javascript
Desarrollo Web
Marot77 3 2,777 Último mensaje 23 Junio 2011, 01:33 am
por Spider-Net
Ayuda con javascript en mi web(no tengo ni idea de javascript)
Desarrollo Web
jonathanmr 1 3,490 Último mensaje 1 Febrero 2013, 06:14 am
por Shell Root
[javascript] [Bucle For] invertir números en javascript.
Desarrollo Web
Ali Baba 3 10,057 Último mensaje 29 Mayo 2017, 10:00 am
por ThinkByYourself
Curso de javascript | 3. Estructura de los comandos javascript
Desarrollo Web
TickTack 0 2,353 Último mensaje 17 Julio 2022, 01:11 am
por TickTack
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines