0votos

Número Feliz en Java

por Johan lopez hace 16 días

Hola disculpa que no lo hiciera en c++ en que no se programar en c++ pero de repente como lo hice en java te guíes un poco por la similitud de su sintaxis ya que podrás entenderlo y solo tendrás que trasladarlo a c++ deje comentarios y todo, échale un vistazo y me cuentas... Por cierto recuerda que la solución es sumar los cuadrados de cada dígito hasta que den 1 ejemplo : 7 7^2 = 49 4^2 + 9^2 = 97 9^2 + 7^2 = 130 1^2 + 3^2 + 0^2 = 10 1^2 + 0^2 = 1 y listo el numero 7 es un num

Hola a todos necesito ayuda con un método en C++ sobre como determinar si un número es feliz o no.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import java.util.*; 
 
public class NumeroFeliz { 
 
    public static void main(String[] args) { 
         
        Scanner entrada = new Scanner(System.in); 
         
        //PIDO UN VALOR AL USUARIO Y LO PASO COMO STRING PARA APLICARLE CADENAS Y CREO UNA COPIA PARA HACER USO DE ELLA YA QUE 
        //EL VALOR ORIGINAL CAMBIARA DURANTE LA EJECUCION DEL PROGRAMA. 
        System.out.println("Ingrese un numero : "); 
        String valor = entrada.nextLine(); 
        String copia = valor; 
         
        //CREO UN ARREGLO DE ENTEROS PARA GUARDAR LOS NUMEROS QUE ME VAYA ARROJANDO EL CICLO 
        ArrayList<Integer> Vector = new ArrayList<Integer>(); 
         
        int suma; 
         
        do { 
             
            suma = 0; 
            //RECORRO LA CADENA PARA TOMAR ELEMENTO POR ELEMENTO Y ELEVARLO AL CUADRADO Y SUMARLO COMO PIDE LA FORMULA 
            for(int i = 0; i < valor.length(); i++){ 
                 
                double numero = Double.parseDouble("" + valor.charAt(i)); //LO CONVIERTO DE CHAR A DOUBLE PARA  
                //PASARLO POR EL METODO POW Y SACAR SU CUADRADO 
                 
                suma = suma + (int)Math.pow(numero, 2); //SUMO  
                 
             
            //AHORA REVISO SI LA SUMA QUE HICE SE ENCUENTRA EN EL ARREGLO DE VALORES QUE ME VA ARROJANDO EL CICLO 
            //Y SI SE REPITE SIGNIFICA QUE CAYO EN UN CICLO INFINITO Y SI CAE EN UN CICLO  
            // INFINITO SIGNIFICA QUE NO ES UN NUMERO FELIZ, SINO EXISTE SIGUE AGREGANDO AL ARREGLO. 
            if(Vector.contains(suma)){ 
                suma = -1; 
            }else if(!Vector.contains(suma)){ 
                Vector.add(suma); 
                valor = String.valueOf(suma); 
             
            //SI LA SUMA LLEGA A DAR 1 O -1 ENTONCES SE SALE DEL CICLO DO. 
        } while (suma != 1 && suma != -1); 
         
         
        //Y POR FIN REVISA SI ES NUMERO FELIZ O INFELIZ 
        if(suma == 1){ 
        System.out.println("Numero " + copia + " es un numero feliz" ); 
        }else if(suma == -1){ 
        System.out.println("Numero " + copia + " es un numero infeliz" ); 
         
         
         
2 comentarios
0votos

Escrito por Johan lopez hace 16 días

De todas maneras no es el mejor código, así que seguro alguien pondrá una solución mejor y no solo eso, un lenguaje diferente y ojala sea pronto, estoy ansioso por ver una forma diferente de hacer este pequeño programa.
0votos

Escrito por josejuan hace 13 días

Hola Johan, este desafío se resolvió hace más de 5 años, como no lo hice entonces, posteo mi solución ahora: http://www.solveet.com/exercises/El-numero-feliz/73/solution-3722

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.