Autor
|
Tema: javascript (Leído 6,480 veces)
|
thebus4k
Desconectado
Mensajes: 39
|
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
Mensajes: 1.217
(e -> λ("live now")); tatuar -> λ("α");
|
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
|
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
Mensajes: 2.399
Turn off the red ligth
|
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Factorial</title> </head> <body> <script> /* Declara 2 variables y las define en una sola expresión */ var n1 = prompt("Introduce un número"), n2 = 1; /* Declara otra variable. Aquí para indicar hoisting */ var div; /* Muestra en consola que puso el usuario. */ console.log("El usuario ha introducido:" + n1); /* Mientras el numero sea negativo, sea NaN, contenga espacios, sea null o un string sin valor ... */ while(n1 < 0 || isNaN(+n1) || /\s/gm.test(n1) || n1 === null || n1 === "") { console.log("El número " + n1 + " introducido no es factorizable."); n1 = prompt("El número introducido no es factorizable.\nInténtalo de nuevo"); } /* Coherce a número. */ n1 = +n1; while(n1) { n2 = n1 * n2; --n1; console.log("Valor de n2 = " + n2 + "\nValor de n1 = " + n1); } div = document.createElement("div"); div.id = "respuesta"; div.innerHTML = "El factorial es: " + n2; document.body.appendChild(div); </script> </body> </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
Mensajes: 39
|
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Factorial</title> </head> <body> <script> /* Declara 2 variables y las define en una sola expresión */ var n1 = prompt("Introduce un número"), n2 = 1; /* Declara otra variable. Aquí para indicar hoisting */ var div; /* Muestra en consola que puso el usuario. */ console.log("El usuario ha introducido:" + n1); /* Mientras el numero sea negativo, sea NaN, contenga espacios, sea null o un string sin valor ... */ while(n1 < 0 || isNaN(+n1) || /\s/gm.test(n1) || n1 === null || n1 === "") { console.log("El número " + n1 + " introducido no es factorizable."); n1 = prompt("El número introducido no es factorizable.\nInténtalo de nuevo"); } /* Coherce a número. */ n1 = +n1; while(n1) { n2 = n1 * n2; --n1; console.log("Valor de n2 = " + n2 + "\nValor de n1 = " + n1); } div = document.createElement("div"); div.id = "respuesta"; div.innerHTML = "El factorial es: " + n2; document.body.appendChild(div); </script> </body> </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
Mensajes: 2.399
Turn off the red ligth
|
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í. function Factorizar(num1, num2, info) { if(num1 < 0 || isNaN(+num1) || /\s/gm.test(num1) || num1 === null || num1 === "") { throw new error("El número no puede ser factorizado"); } var numero1 = num1, numero2 = num2; while(n1) { num2 = num1 * num2; --num1; switch(info) { case 1: console.log(numero1 + " - " + numero2 + " es igual a " + num2); break; case 2: alert(numero1 + " - " + numero2 + " es igual a " + num2); break; } } }
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. /* Declara 2 variables y las define en una sola expresión */ var n1 = prompt("Introduce un número"), n2 = 1; /* Declara otra variable. Aquí para indicar hoisting */ var div; /* Muestra en consola que puso el usuario. */ console.log("El usuario ha introducido:" + n1); /* Mientras el numero sea negativo, sea NaN, contenga espacios, sea null o un string sin valor ... */ while(n1 < 0 || isNaN(+n1) || /\s/gm.test(n1) || n1 === null || n1 === "") { console.log("El número " + n1 + " introducido no es factorizable."); n1 = prompt("El número introducido no es factorizable.\nInténtalo de nuevo"); } /* Coherce a número. */ n1 = +n1; Factorizar(n1, n2, 1); div = document.createElement("div"); div.id = "respuesta"; div.innerHTML = "El factorial es: " + n2; 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. <!DOCTYPE html>
|
|
|
En línea
|
Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖
|
|
|
thebus4k
Desconectado
Mensajes: 39
|
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í. function Factorizar(num1, num2, info) { if(num1 < 0 || isNaN(+num1) || /\s/gm.test(num1) || num1 === null || num1 === "") { throw new error("El número no puede ser factorizado"); } var numero1 = num1, numero2 = num2; while(n1) { num2 = num1 * num2; --num1; switch(info) { case 1: console.log(numero1 + " - " + numero2 + " es igual a " + num2); break; case 2: alert(numero1 + " - " + numero2 + " es igual a " + num2); break; } } }
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. /* Declara 2 variables y las define en una sola expresión */ var n1 = prompt("Introduce un número"), n2 = 1; /* Declara otra variable. Aquí para indicar hoisting */ var div; /* Muestra en consola que puso el usuario. */ console.log("El usuario ha introducido:" + n1); /* Mientras el numero sea negativo, sea NaN, contenga espacios, sea null o un string sin valor ... */ while(n1 < 0 || isNaN(+n1) || /\s/gm.test(n1) || n1 === null || n1 === "") { console.log("El número " + n1 + " introducido no es factorizable."); n1 = prompt("El número introducido no es factorizable.\nInténtalo de nuevo"); } /* Coherce a número. */ n1 = +n1; Factorizar(n1, n2, 1); div = document.createElement("div"); div.id = "respuesta"; div.innerHTML = "El factorial es: " + n2; 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. <!DOCTYPE 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
Mensajes: 2.399
Turn off the red ligth
|
function Factorizar(num1, num2, info) { if(num1 < 0 || isNaN(+num1) || /\s/gm.test(num1) || num1 === null || num1 === "") { throw new error("El número no puede ser factorizado"); } var numero1 = num1, numero2 = num2; while(num1) { num2 = num1 * num2; --num1; switch(info) { case 1: console.log(numero1 + " - " + numero2 + " es igual a " + num2); break; case 2: alert(numero1 + " - " + numero2 + " es igual a " + num2); break; } } return num2 }
/* Declara 2 variables y las define en una sola expresión */ var n1 = prompt("Introduce un número"), n2 = 1; /* Declara otra variable. Aquí para indicar hoisting */ var div; /* Muestra en consola que puso el usuario. */ console.log("El usuario ha introducido:" + n1); /* Mientras el numero sea negativo, sea NaN, contenga espacios, sea null o un string sin valor ... */ while(n1 < 0 || isNaN(+n1) || /\s/gm.test(n1) || n1 === null || n1 === "") { console.log("El número " + n1 + " introducido no es factorizable."); n1 = prompt("El número introducido no es factorizable.\nInténtalo de nuevo"); } /* Coherce a número. */ n1 = +n1; n2 = Factorizar(n1, n2, 1); div = document.createElement("div"); div.id = "respuesta"; div.innerHTML = "El factorial es: " + n2; 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
Mensajes: 39
|
function Factorizar(num1, num2, info) { if(num1 < 0 || isNaN(+num1) || /\s/gm.test(num1) || num1 === null || num1 === "") { throw new error("El número no puede ser factorizado"); } var numero1 = num1, numero2 = num2; while(num1) { num2 = num1 * num2; --num1; switch(info) { case 1: console.log(numero1 + " - " + numero2 + " es igual a " + num2); break; case 2: alert(numero1 + " - " + numero2 + " es igual a " + num2); break; } } return num2 }
/* Declara 2 variables y las define en una sola expresión */ var n1 = prompt("Introduce un número"), n2 = 1; /* Declara otra variable. Aquí para indicar hoisting */ var div; /* Muestra en consola que puso el usuario. */ console.log("El usuario ha introducido:" + n1); /* Mientras el numero sea negativo, sea NaN, contenga espacios, sea null o un string sin valor ... */ while(n1 < 0 || isNaN(+n1) || /\s/gm.test(n1) || n1 === null || n1 === "") { console.log("El número " + n1 + " introducido no es factorizable."); n1 = prompt("El número introducido no es factorizable.\nInténtalo de nuevo"); } /* Coherce a número. */ n1 = +n1; n2 = Factorizar(n1, n2, 1); div = document.createElement("div"); div.id = "respuesta"; div.innerHTML = "El factorial es: " + n2; 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
Mensajes: 2.399
Turn off the red ligth
|
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
Mensajes: 39
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
javascript
Desarrollo Web
|
BeLGaRioN
|
1
|
2,094
|
2 Junio 2011, 14:30 pm
por D4RIO
|
|
|
javascript
Desarrollo Web
|
Marot77
|
3
|
2,743
|
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,431
|
1 Febrero 2013, 06:14 am
por Shell Root
|
|
|
[javascript] [Bucle For] invertir números en javascript.
Desarrollo Web
|
Ali Baba
|
3
|
9,848
|
29 Mayo 2017, 10:00 am
por ThinkByYourself
|
|
|
Curso de javascript | 3. Estructura de los comandos javascript
Desarrollo Web
|
TickTack
|
0
|
2,284
|
17 Julio 2022, 01:11 am
por TickTack
|
|