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