Numero feliz en C

Iniciado por estudiante_1, 8 Junio 2016, 12:30 PM

0 Miembros y 1 Visitante están viendo este tema.

estudiante_1

Hola, tengo que hacer un programa que me diga si un número es feliz. No sé como implementarlo. Lo que he hecho es primero que me diga las cifras que tiene el número ingresado y que me diga las cifras que son.
Aquí está la definición de número feliz: https://es.wikipedia.org/wiki/Número_feliz
    esto es lo que tengo de momento:
   #include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define max 100



    int cifras(int n,int i){
        i=1;
    while(n/10>0){
        n=n/10;
        i++;

    }
    return(i);
    }
    void digito(int v[],int n,int digitos,int c ){

       for(c=0;c<digitos;c++){
        v[c]=n%10;
        n=n/10;
       }

    }


       int main(Void){
       int n;
       int i=1;
       scanf("%d",&n);
       int v[max];
       int digitos=cifras(n,i);
    printf("Tiene %d cifras\n",digitos);
    int c;
   digito(v,n,digitos,c);
   for(c=0;c<digitos;c++){
    printf("%d\n",v[c]);
   }

















       system("pause");
       return(0);

       }

Gracias.
 

AlbertoBSD

Para facilitar el conteo de digitos puedes leer una cadena directamente  asi tambien es mas facil el acceso a los dígitos individuales.

Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

fary

// Programado por fary


#include <stdio.h>
#include <math.h>

int DigitosNumeros(int Numero); // Separa el numero en digitos

int Numeros[10] = {0};

int main()
{
    int Numero = 0;

    printf("Introduce tu numero: ");
    scanf("%i", &Numero);

    if (Numero < 0)
    {
        printf("Introduce un numero valido.\n");
    }else{
        int i = 0;
        int suma = 0;
        int z = 0;

        while (z < 20)
        {
            DigitosNumeros(Numero);

            suma = 0;
            for (i = 0; i < 10; i++)
            {
                suma = suma + Numeros[i];
            }

            if (suma == 1)
            {
                printf("Numero Feliz :)\n");
                return 0;
            }

            suma = 0;
            for (i = 0; i < 10; i++)
            {
                suma = suma + pow(Numeros[i], 2);
            }

            Numero = suma;
            memset(Numeros,0,40);
            z++;
        }
        printf("El numero NO es feliz :(\n");
    }
    return 0;
}

int DigitosNumeros(int Numero)
{
    int i = 0;
    int n;

    while(Numero > 0)
    {
        Numeros[i]  = Numero % 10;
        Numero = Numero / 10;
        i++;
    }
    return 0;
}



:P
Un byte a la izquierda.