anun1

domingo, 22 de junio de 2025

Imprimir n numeros felices en Javascript y html

Hola amigos aqui les traigo otro aporte es un codigo mas, esta hecho en javascript, se trata  de imprimir n numeros felices y mostrarlos en pantalla o en un cuadro de texto como lo hice yo bueno empesamos, primero tecleamos todo el codigo HTML que usaremos es este

<html>
<head><title>Numeros Felices</title>
</head>
<body>
<br><br><br>
<center>
Dame n Numeros Felices A Encontrar:<input type="text" id="num" style="text-align:center;">
<input type="button" value="Encontrar" onclick="buscar()"><br><br>
<textarea id="log" cols="50" rows="50"></textarea>
</center>
<script>
</script>
</body>
</html>

bueno ya tenemos el codigo html ahora pasaremos a la funcion buscar es la siguiente

function buscar()
{
   let n=parseInt(document.getElementById("num").value,10) //convertimos el valor del campo de texto a entero
   if(n>0) //pregunta si n es mayor a 0
   {
      let x=0 //inicializa x a 0
      while(n!=0) //pregunta si n es diferente a 0 si es asi entra y se repite el ciclo
      {
         x++ //incrementa x en 1 
	     if(bus(x)) //envia x a la funcion bus y regresa un valor booleano si es true quiere decir que el numero es feliz 
	     {
	        document.getElementById("log").value+=x.toString() + "\n" //agraga el valor al campo de texto log
		n-- //resta a n 1
	     } 
      }
   }
   else
   {
      alert("Error solo numeros mayores a 1") //envia un mensaje en pantalla
	  document.getElementById("num").value="" // limpia el cuadro de texto num
   }   
}

1-como vemos primero tomamos el valor escrito en el campo de texto y lo convertimos a entero
2-despues pregunta si n es mayor a cero, si es mayor entra sino manda un mensaje en pantalla
3-inicializa x a 0
4-envia x a la funcion bus y regresa un valor booleano si es true quiere decir que el numero es feliz 
5-si entro al if quiere decir que el valor x es un numero feliz asi que es agregado al campo de texto log
6-resta a n uno

ahora veromos la funcion bus aqui esta

function bus(numberx)
{
   let puntero= new Array() //declara un array
   let nnstr,largo,x,d,nn,suma=0 //declara las variables a usar
   nn=numberx //inicializa nn 
   do  //ciclo do while
   {
      nnstr=nn.toString() //convierte nn a string y es almacenado en la variable nnstr
      puntero.push(nn) //agrega un valor al array puntero
      largo=nnstr.length //toma la longitud de la variable nnstr y lo almacena en largo
      nn=0 //inicializa nn a 0
	  
	  for(x=0;x<largo;x++) //ciclo for
	  {
	     d=parseInt(nnstr.substr(x,1),10) //toma el digito del numero en string del primero al ultimo en cada vuelta del for y lo convierte a entero 
	     d=Math.pow(d,2) //eleva al cuadrado el digito tomado 
	     nn+=d //le suma el valor obtenido de elevar al cuadrado a nn	 
	  }
   }while(puntero.indexOf(nn)==-1) //pregunta si el valor de nn se encuentra dentro del array si es asi se sale del ciclo do while
   
   if(nn==1) //pregunta si nn es igual a 1 si es asi retorna true y quiere decir que el numero es feliz
   {
     return true 
   }
   else
   {
     return false
   }   
}   

1-en las primeras lineas de la funcion declara las variables a usar y un array llamado puntero
2-entra al ciclo do while y convierte nn a string para poder tomar digito por digito en el ciclo for
3-agrega el valor de nn al array, para poder preguntar despues si se encuentra dentro de el
4-toma la longitud de la variable nnstr y lo almacena en largo, para despues inicializar la variable nn a 0
5-tenemos un ciclo for donde la primera linea dentro de el es tomar digito por digito de uno en uno de nnstr y convertirlo a entero para despues elevarlo al cuadrado e irlos sumando a nn
6-en el while se pregunta si nn se encuentra en el array si no se encuentra entra de nuevo, si no entra devuelve false y quiere decir que no es un numero feliz

bueno aqui les dejor el codigo completo

<html>
<head><title>Numeros Felices</title>
</head>
<body>
<br><br><br>
<center>
Dame n Numeros Felices A Encontrar:<input type="number" id="num" style="text-align:center;" min="1">
<input type="button" value="Encontrar" onclick="buscar()"><br><br>
<textarea id="log" cols="50" rows="50"></textarea>
</center>
<script>
function buscar()
{
   let n=parseInt(document.getElementById("num").value,10)
   if(n>0)
   {
      let x=0
      while(n!=0)
      {
         x++  
	     if(bus(x))
	     {
	        document.getElementById("log").value+=x.toString() + "\n"
		    n--
	     } 
      }
   }
   else
   {
      alert("Error solo numeros mayores a 1")
	  document.getElementById("num").value=""
   }   
}
function bus(numberx)
{
   let puntero= new Array()
   let nnstr,largo,x,d,nn,suma=0
   nn=numberx
   do
   {
      nnstr=nn.toString()
      puntero.push(nn)
      largo=nnstr.length
      nn=0
	  
	  for(x=0;x<largo;x++)
	  {
	     d=parseInt(nnstr.substr(x,1),10)
	     d=Math.pow(d,2)
	     nn+=d		 
	  }
   }while(puntero.indexOf(nn)==-1)
   
   if(nn==1)
   {
     return true 
   }
   else
   {
     return false
   }   
}   
</script>
</body>
</html>

qui una foto del programa en ejecucion




si quieren probar el codigo solo copean este ultimo que es el codigo completo y lo pegan en el bloc de notas y lo aguardan con el nombre que quieran pero con la extension .html

bueno saludos Flamer y espero les guste


No hay comentarios.:

Publicar un comentario