Adsence

domingo, 24 de abril de 2011

NUMERO-FELIZ

Leave a Comment
[caption id="attachment_1089" align="aligncenter" width="674"]Numero feliz en C++ Numero feliz en C++[/caption]

Escriba un programa en C que lea por teclado un número N e imprima si es un Número Feliz.

Número feliz: todo número natural que cumple la condición de que si se suma los cuadrados de sus dígitos y se sigue el mismo proceso con los resultados parciales hasta obtener un solo dígito... el resultado es 1.

Por ejemplo, el número 203 es un número feliz ya que

  • 203-->22 + 02 + 32 = 13,el mismo proceso para el 13 es

  • 13 -->12 + 32 = 10 ,el mismo proceso para el 10 es,

  • 10 -->12+ 02 = 1.


Como el resultado es de un solo dígito ( en caso contrario seguir el proceso), se detiene el proceso para este ejemplo (porque el resultado es de un solo dígito) 19 es feliz porque 1^2 + 9^2 = 82 el mismo proceso para 82 .... 8^2 + 2^2 =68 el mismo proceso para 68 6^2+8^2 = 100 el mismo proceso para 100 1^2 + 0^2 + 0^2 = 1



[cpp]

# include < stdio.h >
# include < conio.h >

main()
{
int k=0,sum,num,g,s;
bool d;
printf("DIGITE NUMERO: ");
scanf("%d",&num);

do
{
for(sum=0;num!=0;sum+=s)
{
g=num%10; //se extrae el ultimo digito
num/=10; //se divide el numero entre 10 para que cambie
s=g*g; //se eleva el residuo de la division al cuadrado
}
if(sum==1){ //si el sumador da 1 se termina el programa
d=true;}

else{ //sino se mira la posibilidad de que en la siguiente
num=sum; //iteraccion el numero de uno, este ciclo se prueba 21 veces
k++;
if(k==20) //dado caso que el sumar no de uno en las 21 iteracciones finaliza el programa
{sum=1; //cierro el ciclo forzadamente ya que no se encontro el valor esperado
d=false;
} } }while(sum!=1); //se evalua la condicion de que solo finaliza cuando la suma de uno

if(d==true)
printf("\nEL NUMERO ES FELIZ");
else
printf("\nEL NUMERO NO ES FELIZ");

getch();
}

[/cpp]

0 comentarios :