anun1

miércoles, 23 de julio de 2025

Sumar los digitos de un numero dado en javascript

Hola amigos hoy haremos un codigo para sumar los digitos de x numero dado por el usuario por ejemplo si el usuario ingresa 34 sumaremos 3+4 el resultado a mostrar en pantalla sera la siguiente:

3+4=7

y si la suma de los digitos de este numero dan como resultado un numero con mas de 1 digito seran devueltamente sumados ejemplo

56566 seria asi

5+6+5+6+6=28--->2+8=10--->1+0=1

bueno manos a la obra primero la funcion sum() es esta

function sum()
{ 
   let n=document.getElementById("num").value.toString() //toma el numero y lo convierte en string

   document.getElementById("log").value="" //limpia el campo de texto log
   sumar(n) //manda llamar la funcion sumar y le manda la variable n
}

los que hace esta funcion es tomar el numero dado y convertirlo a string despues limpia el campo de texto log y al final manda llamar la funcion sumar mandandole la variable n que es el valor dado por el usuario

bueno ya que entendimos este pedaso de codigo pasamos a la funcion sumar(n) esta

function sumar(n)
{
   let s=0,c="",x //inicializa las variables
   
   for(x=0;x<n.length;x++) //x=0 y pregunta si x es menor a la longitud de digitos de n para aumentar uno en uno con x++
   {
      d=n.substr(x,1) //toma el digito de la variable n
      c+=d + "+"  //concatena el digito tomado y le agraga un +
      s+=parseInt(d) //convierte el digito tomado y lo suma a la variable s
   }
   c=c.slice(0,-1)+"=" //remplaza el ultimo caracter de la variable c por un =
   c+=s //concatena el valor de s a la variable c 
   document.getElementById("log").value+=c //agraga el contenido de la variable c a el campo de texto log
   c=s.toString()//convierte el valor de la variable s a string y lo almacena en la variable c
   
   if(c.length > 1) //pregunta si la variable c tiene mas de un digito si es asi entra y manda llamar la funcion sumar
   {
      document.getElementById("log").value+="--->" //agrega contenido al campo log
      sumar(c) //manda llamar la funcion sumar y le pasa la variable c
   }  
}

en esta funcion primero inicializa las variables s=0,c="" y la variable x con valor no definido por que en el ciclo sera definida a 0...bueno esta funcion resive la variable n que es el numero a sumar sus digitos.

bueno ahora pasaremos al for inicializa la variable x a 0 despues preguntara la longitud de la variable n, cuantos digitos tiene y si x es menor a eso, esto quiere desir que el ciclo dara el numero de vueltas segun el numero de digitos de la variable n y despues ira aumentando uno en uno el valor de x.

asi que despues tomamos digito por digito de la variable n asi

 d=n.substr(x,1) despues lo concatena a la variable c añadiendole un + para despues convertirlo a entero y asi poderlo sumar a la variable s

al salir del for remplaza el ultimo caracter de la variable c por un  =  y despues en la siguiente linea a la variable c se le concatena la variable s para despues agragar el valor de c al campo de texto log

por ultimo el valor de la variable s es convertido a string y se almacena en la variable c para despues preguntar con un if si el valor de c tiene mas de un digito si es asi manda llamar la funcion sumar para que se repita la funcion y sume los nuevos digitos del numero obtenido.

bueno aqui el codigo completo

<html>
<head><title>Suma De Numeros</title>
</head>
<body>
<br><br><br><br>
<center>
Dame el numero a sumar:<input type="number" id="num">
<input type="button" value="Iniciar" onclick="sum()"><br><br>
<textarea id="log" cols="60" rows="10"></textarea>
</center>
<script>
function sumar(n)
{
   let s=0,c="",x
   
   for(x=0;x<n.length;x++)
   {
      d=n.substr(x,1)
	  c+=d + "+"  
	  s+=parseInt(d)
   }
   c=c.slice(0,-1)+"="
   c+=s
   document.getElementById("log").value+=c
   c=s.toString()
   
   if(c.length > 1)
   {
      document.getElementById("log").value+="--->"
      sumar(c)
   }
   
}
function sum()
{ 
   let n=document.getElementById("num").value.toString()

   document.getElementById("log").value=""
   sumar(n)
}
</script>
</body>
</html>

si lo quieren probar solo copeen y peguenlo en el bloc de notas y aguardar con la extencion .html  aqui una foto

bueno asi que aumentemos el nivel si queremos sumar los numeros de un rango estimado por ejemplo del 100 al 1000 solo añadiriamos un for ala funcion sum() aqui el codigo completo no lo explico por que es casi lo mismo solo cambea la funcion sum un poco añadiendole un for y nuevas variables

<html>
<head><title>Suma De Numeros</title>
</head>
<body>
<br><br><br><br>
<center>
Sumar valores de rango:<input type="number" id="num1" style="text-align:center;"> 
a <input type="number" id="num2" style="text-align:center;"><br><br>
<input type="button" value="Iniciar" onclick="sum()"><br><br>
<textarea id="log" cols="50" rows="70"></textarea>
</center>
<script>
function sumar(n)
{
   let s=0,c="",x
    
   
   for(x=0;x<n.length;x++)
   {
      d=n.substr(x,1)
	  c+=d + "+"  
	  s+=parseInt(d)
   }
   c=c.slice(0,-1)+"="
   c+=s
   document.getElementById("log").value+=c
   c=s.toString()
   
   if(c.length > 1)
   {
      document.getElementById("log").value+="--->"
      sumar(c)
   }
   
}
function sum()
{
   let n1=parseInt(document.getElementById("num1").value) //convertimos los valores a enteros
   let n2=parseInt(document.getElementById("num2").value) //usando el comando parseInt lo convertimos a entero
   let x,n=""
   
   document.getElementById("log").value="" //limpiamos el campo de texto log
   
   for(x=n1;x<=n2;x++)//x es inicializada con el valor inicial de n1 y el ciclo termina con el valor dado segun el valor de n2
   {
      n=x.toString() //x es convertida en string y almacenada en n
      sumar(n) //manda llamar la funcion sumar y le envia la variable n
      document.getElementById("log").value+="\n"
   }
}
</script>
</body>
</html>

aqui una foto



bueno eso creo que es todo espero les guste y saludos Flamer


No hay comentarios.:

Publicar un comentario