Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] suma de un numero y de sus predecesores

Estas en el tema de suma de un numero y de sus predecesores en el foro de Javascript en Foros del Web. Hola amigas y amigos, a ver si pudieran ayudarme con esto: Tengo un ejercicio hecho que mediante un numero cualquiera introducido deberia mostrarme la suma ...
  #1 (permalink)  
Antiguo 14/11/2015, 09:22
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
suma de un numero y de sus predecesores

Hola amigas y amigos, a ver si pudieran ayudarme con esto:

Tengo un ejercicio hecho que mediante un numero cualquiera introducido deberia mostrarme la suma de el mismo con todos los numeros que le preceden.

Es decir si meto por ejemplo el numero 3, deberia hacer 3 + 2+ 1 = 6

y diria que lo tengo bien el ejercicio pero no me muestra el resultado por pantalla y no se por que no lo muestra.

Miren esto es lo que he hecho:

Código Javascript:
Ver original
  1. function sumar(num)
  2.  
  3.                 {
  4.                             suma_total = num(num+1)/2;
  5.  
  6.  
  7.                             document.write(suma_total);
  8.                 }



Código HTML:
Ver original
  1. <input type="text" id="numero">
  2.        
  3.         <input type="button" value="sumar" onclick="sumar(document.getElementById('numero').value)">
  4.  
  5.        
  6.         <!--Resultado de todos los números hasta el número introducido-->
  7.         <div id="total"></div>

gracias de antemano.
  #2 (permalink)  
Antiguo 14/11/2015, 10:09
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: suma de un numero y de sus predecesores

Bien, es un simple Gauss. El problema es que JavaScript no interpreta num(num+1) como una multiplicación, sino una función. Si añades el operador correspondiente verás que funciona:

Código Javascript:
Ver original
  1. function sumar(num){
  2.     suma_total = num * (num+1)/2;
  3.     document.write(suma_total);
  4. }

PD: También debes pasarlo a número antes:

Código HTML:
Ver original
  1. <input type="button" value="sumar" onclick="sumar(parseInt(document.getElementById('numero').value,10))">

Última edición por PHPeros; 14/11/2015 a las 10:15
  #3 (permalink)  
Antiguo 14/11/2015, 10:48
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
Respuesta: suma de un numero y de sus predecesores

gracias PHPeros, funciona bien ya.

Pero veras; entiendo lo de poner el "*"

pero no entiendo lo de poner el valor "10" en el input junto al value.???

Por otro lado si dejo parseInt, funciona correctamente.

Pero si se lo quito me da un valor como resultado, erroneo es decir si meto 3 , el

resultado que me da es 46.5

Pero si se lo dejo el resultado es 6 osea el correcto.

Pero no entiendo por que el resultado cambia con o sin parseint, ya que este solo

sirve por lo que se, para transformar una cadena de carateres en numero simplemente.

Y yo meto un numero.

¿?
  #4 (permalink)  
Antiguo 14/11/2015, 11:25
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: suma de un numero y de sus predecesores

Eso sucede porque cualquier valor ingresado a un elemento de formulario, se recupera como una cadena de texto, incluso si solo ingresaste números. El 10 representa la base numérica hacia la cual se realizará la conversión. Siempre échale un vistazo a la documentación existente.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 14/11/2015, 11:28
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: suma de un numero y de sus predecesores

Sí, precisamente por eso, si pasas un string en vez de número estarás concatenando con 1 en vez de sumando 1 justo en esta parte:

Código Javascript:
Ver original
  1. (num+1)/2;

Eso se da solamente en el operador de suma ya que en el resto la conversión se realiza de forma automática:

Código Javascript:
Ver original
  1. "3" * "2"  = 6

Y lo de especificar la base en parseInt te ha comentado Alexis88:

http://stackoverflow.com/questions/8...octal-behavior
  #6 (permalink)  
Antiguo 14/11/2015, 11:57
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
Respuesta: suma de un numero y de sus predecesores

Ahora lo entiendo todo, muchas gracias phperos y alexis88

Etiquetas: input, numero, suma
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:56.