0votos

Número Feliz en Java

por Johan lopez hace 2 meses

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 2 meses

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 2 meses

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.