Programando en C – Cifras de un número

También te podría gustar...

29 Respuestas

  1. masc dice:

    hola una duda al respecto de este cogido si pongo un numero con mas de 10 caracteres este me tira 1

    • eodos dice:

      Hola masc. Si te das cuenta, cuando introduces el número lo almacenamos en una variable de tipo double (d). Este tipo tiene un límite en la longitud de su valor. Para números más largos puedes usar long double (ld).

  2. jjj dice:

    Hola quería saber el porque se divide el numero entre 10 y se le pone un contador

    • eodos dice:

      Cada vez que divides el número entre 10 lo que haces es quitarle un dígito, el cual cuentas con el contador.
      Por ejemplo el número 1350.
      contador=1
      1350/10 = 135, contador=2
      135/10 = 13, contador=3
      13/10 = 1, contador=4
      Y acaba al ser 1 menor que 10.

  3. Álvaro dice:

    Muchas gracias por el ejercicio! Un saludo de un iniciador a C

  4. Julian dice:

    No entendi la condicion del while.. Si el numero / 10 > 0 entonces pasa el cuerpo del while.. Ademas, porque dividido diez.. Diez digitos son los que le pusiste a tu numero?

    • eodos dice:

      Si (numero/10 > 0) quiere decir que el número es mayor que 10, y por tanto podemos “quitarle” una cifra y repetir el procedimiento hasta que sea menor que 10. Puede hacerse de muchas formas.

  5. Maximiliano dice:

    Hola. La verdad que me ha servido para entender como hacerlo con ciclos, ya que yo había complicado las cosas al hacerlo utilizando logaritmos. Muchas gracias. Saludos.

  6. Saiki dice:

    Hola 🙂 Quería saber como se puede hacer si tengo un numero no entero, como puedo saber cuantos números decimales tiene, para saber los enteros ya lo entendí perfectamente, muchas gracias.

    • eodos dice:

      Hola. Esa pregunta no tiene una respuesta fácil. Cuando tienes una variable flotante, sea float o double, ese número está siendo almacenado con una precisión fija, lo cual quiere decir que si quieres almacenar el número 0.1, la representación binaria de ese número no cabe en 32 bits (variable float) y por tanto lo que vas a almacenar es una aproximación a ese número que ocupe menos de 32 bits, en este caso 0.10000000000000001. Por ese motivo, una vez un número está almacenado en una variable float o double, no puedes extraer los dígitos que tiene. Diferente caso sería si el número está almacenado en un string (char*).

  7. el diablo dice:

    esta bueno pero no satiface mi necesidades

  8. bloblo dice:

    y si el numero a controlar es negativo?? como seria?? Un saludo

  9. betty dice:

    y como seria si este mismo ejercicio lleva DO-WHILE

    • eodos dice:

      Puedes reemplazar el while por un do-while, pero tendrías que añadir una condición de salida al principio del programa que compruebe si num<10 y devuelva 1 en ese caso. Un saludo.

  10. betty dice:

    de la salida que me dices no te entendí bien 😀

    int main()
    {
    int n, x = 0;
    do
    {
    cout << "ingrese numeros" <> n;
    n = n / 10;
    x<10;
    cout << "el numero tiene " << x << " cifras" << endl;
    } while (n != 0);
    _getch();
    }

    • eodos dice:

      Algo así:

  11. Luis Espejo dice:

    Hola, sabes que llevo dias buscando ayuda, queria saber como es posible contar la cantidad de ciertos digitos que tenga un numero, por ejemplo, al introducir el numero 100, me diga que tengo 1 digito 1 y 2 digitos 0.

    • eodos dice:

      Hola! Puedes reusar este código. Cada vez que que en el bucle while divides entre 10, puedes obtener el dígito que has eliminado calculando num%10, y llevando la cuenta en un array de cuantas veces has encontrado ese dígito.

      Algo así:

      Después del bucle while, dentro del array contador tendrás los valores que buscas:
      contador[0]: veces que aparece el dígito 0,
      contador[1]: veces que aparece el dígito 1,
      etc.

  12. Carlos Artigas dice:

    Hola sabes que necesito validar numeros de tarjetas, pero tengo un problema en el tema de los digitos (no en contarlos) sino en el tema de la cantidad de digitos la cual me ingresa, necesito que sea mayor a 13 digitos, tengo esto ;

    printf(“Ingrese el numero de tarjeta\n “);
    scanf(“%ld”, &num );
    while (num > 9999999999999)
    {
    printf (“Ingrese un numero de tarjeta valido\n “);
    scanf(“%d”,&num);
    }

    • Carlos Artigas dice:

      si me pudieras ayudar, te lo agradeceria demasiado, gracias

    • eodos dice:

      Hola, tienes 2 opciones:
      1) Leer la entrada como string o char* y luego procesarla. Asi no tendrías límite en el número de dígitos que puedes leer.
      2) Leer el número como uint64_t (unsigned long), que te permite almacenar 64 bits (el valor máximo sería 2^64 = 18446744073709552000). Podrías almacenar hasta 19 dígitos de esta forma.

      • Carlos Artigas dice:

        hice el mismo código que tu propusiste, y cambie el int num por un unsigned long y aún así no puede saber cuantos digitos tiene un numero mayor de 11 digitos /:, estaba pensando que a lo mejor era mi computador:

        unsigned long num = 1 ;
        int k = 1 ;

        printf(“Ingrese el numero de tarjeta\n “);
        scanf(“%li”, &num);

        // CANTIDAD DE DÍGITOS DE LA TARJETA //

        while ( num / 10 > 0 )
        {
        num = num / 10 ;
        k++ ;
        }
        printf (“Su numero de tarjeta tiene [%d] digitos\n”, k) ;

  13. Carlos Artigas dice:

    hice el mismo código que tu propusiste, y cambie el int num por un unsigned long y aún así no puede saber cuantos digitos tiene un numero mayor de 11 digitos /:, estaba pensando que a lo mejor era mi computador:

    unsigned long num = 1 ;
    int k = 1 ;

    printf(“Ingrese el numero de tarjeta\n “);
    scanf(“%li”, &num);

    // CANTIDAD DE DÍGITOS DE LA TARJETA //

    while ( num / 10 > 0 )
    {
    num = num / 10 ;
    k++ ;
    }
    printf (“Su numero de tarjeta tiene [%d] digitos\n”, k) ;

  14. Carlos Artigas dice:

    quisiera saber si me podrias ayudar en el tema de que estoy imprimiendo el numero y la cantidad de digitos pero me muestra un numero distinto al que ingreso, como por ejemplo : num = 9759 e imprime num = 2157386374824, he leido harto pero solo haba de los %d,i (me pasaba con los enteros pero ahora uso float )

  15. Ericka dice:

    Sí inserto más de 10 números me sale error ayuda

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies