1
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / Concepto de número feliz ¿qué es? Comprobar con algoritmo Error en lógica C++
« en: 05 de Marzo 2021, 16:32 »
Hola, estoy tratando de crear un código para comprobar si un número es feliz.
Lo que tiene que hacer el código es comprobar que un numero es feliz, y esto se verifica si la suma cuadrada sus digitos es igual a 1, y si no es así se prueba con los siguientes obtenidos. Se repite eso 8 veces y si a la octava no salió el número no es feliz
Ejemplo 7**2=49 (eso no es 1 entonces lo repetimos pero con el obtenido)
4**2+9**2=97 (y asi se repite 8 veces)
*Codigo*
Lo que tiene que hacer el código es comprobar que un numero es feliz, y esto se verifica si la suma cuadrada sus digitos es igual a 1, y si no es así se prueba con los siguientes obtenidos. Se repite eso 8 veces y si a la octava no salió el número no es feliz
Ejemplo 7**2=49 (eso no es 1 entonces lo repetimos pero con el obtenido)
4**2+9**2=97 (y asi se repite 8 veces)
*Codigo*
Código: [Seleccionar]
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
int main(){
int Juzgado,Limite=0,Potenciador=0,Respaldo;
bool bandera;
cout<< "Ingrese el numero que desea corroborar si es feliz:" <<endl;
cin>> Juzgado;
while (Limite<=8){ //Solo itera 8 veces antes de concluir que es o no es feliz
Respaldo=Juzgado%10; //Extrae el ultimo digito para potenciarlo
Juzgado=Juzgado/10; //Me recorta el numero
Potenciador=Potenciador+Respaldo*Respaldo;
if(Potenciador==1){ //Si resulta que potencia en algun punto es 1 manda el mensaje
bandera=true;
break;
}
if (Limite==8){ //si alacanzo el limite entonces sale del bucle y dice que no es feliz
bandera=false;
break;
}
if (Juzgado==0){ //Esto ocurre porque si descompuso juzgado y potenciador no es igual a 1 entonces tengo que dar otra vuelta
Limite=+1;
Juzgado=Potenciador;
Potenciador=0;
}
}
if (bandera==true){
cout<<"El numero es feliz" << endl;
}
if (bandera==false){
cout<<"El numero no es feliz" <<endl;
}
system("pause");
return 0;
}