jueves, 12 de mayo de 2016

Codigo para contar cantidad de digitos de un numero entero en C, Java, Python, Small Basic

Diario de un programador. Anexo B: Códigos


Contar digitos de un numero: Lo que hace este código es solicitar un número entero al usuario y luego cuenta la cantidad de dígitos o cifras que tiene ese número

C
Programa utilizado: Code Blocks 13.12

#include <stdio.h>
int main(void){
  int numero, cociente, divisor, contador;
  cociente = 0;
  divisor = 1;
  contador = 0;

  printf("Ingresa un numero: ");
  scanf("%d", &numero);

  while (cociente !=1){
    contador++;
    divisor = divisor * 10;
    cociente = numero / divisor;

    if (cociente == 1){
      printf("El numero tiene %d digitos\n", contador + 1);
    }//fin if

    if (cociente < 1){
      printf("El numero tiene %d digitos\n", contador);
      cociente = 1;
    }//fin if

    if (numero < 10){
        printf("Solo tiene un digito\n");
    }//fin if
  }//fin while

return 0;
}//fin main
//Escrito por Gustavo J. Cerda Nilo, Diciembre 2015

Ejemplo 2 

Este otro ejemplo utiliza un logartimo en base 10 para resolver el problema, con lo cual se reduce mucho el código

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

int main(void){
int num, contador;
    printf("Ingresa un numero: ");
    scanf("%d", &num);

    contador = (log10(num) + 1);
    printf("Tiene %d digitos\n",contador);

    return 0;
}
//Escrito por Gustavo J. Cerda Nilo, diciembre 2015



JAVA
Programa utilizado: Net Beans 8.0.1



import java.util.Scanner;
public class CuentaDigitos {
  public static void main(String[]args){
    Scanner ingreso = new Scanner(System.in);
    int numero, cociente, divisor, contador;
    cociente = 0;
    divisor = 1;
    contador = 0;
    System.out.print("Ingresa un numero: ");
    numero = ingreso.nextInt();
    while (cociente != 1){
      contador ++;
      divisor = divisor * 10;
      cociente = numero / divisor;
      if (cociente == 1){
        System.out.println("El numero tiene: "+ (contador + 1) + " digitos");
      }//fin if
      if (cociente < 1){
        System.out.println("El numero tiene: "+ contador + " digitos");
        cociente = 1;
      }//fin if
           
      if (numero < 10){
        System.out.println("Solo tiene un digito");
        cociente = 1;
      }//fin if
    }//fin while
      
}
}
//Escrito por Gustavo J. Cerda Nilo, Noviembre 2015




Ejemplo 2

Este otro ejemplo utiliza un logartimo en base 10 para resolver el problema, con lo cual se reduce mucho el código


import java.util.Scanner;
public class CuentaDigitos {
  public static void main(String[]args){

    Scanner ingreso = new Scanner(System.in);
    int num,contador;

    System.out.print("Ingresa un nro: ");

    num = ingreso.nextInt();
    contador = ((int)Math.log10(num) + 1);

    System.out.println("Tiene "+ contador + " digitos");

}//fin main
}//fin class

//Escrito por Gustavo J. Cerda Nilo, Noviembre 2015




 


PYTHON 3.5
Programa utilizado: Idle


En este caso lo más sencillo para contar digitos es utilizar la función len(), la cual sirve principalmente para contar caracteres (str), pero casteando el número se obtiene el resultado que se busca.


num = int(input("Ingresa un numero: "))
contador = len(str(num))

print("El numero tiene %s digitos" % (contador))

#Escrito por Gustavo J. Cerda Nilo, Diciembre 2015

 



SMALL BASIC
Programa utilizado: Small Basic 1.1
TextWindow.WriteLine("Contando digitos")
TextWindow.Write("Ingresa un numero: ")
numero = TextWindow.ReadNumber()

cociente = 0
divisor = 1
contador = 0 'para contar los bucles
While cociente <> 1
  contador = contador + 1
  divisor = divisor * 10
  cociente = math.Floor(numero / divisor)'para que entregue nros. Enteros
  If cociente = 1 Then
    TextWindow.WriteLine("El numero tiene " + (contador + 1) + " digitos")
  EndIf
  If cociente < 1 Then
    TextWindow.WriteLine("El numero tiene " + contador + " digitos")
    cociente = 1
  EndIf
 
  ' En caso de que el numero ingresado sea de un digito...
  If numero < 10 Then
    TextWindow.WriteLine("Tiene un solo digito")
    cociente = 1 ' para terminar el bucle
  EndIf 
EndWhile

'Escrito por Gustavo J. Cerda Nilo, Noviembre 2015
Ejemplo 2
Este otro ejemplo utiliza un logartimo en base 10 para resolver el problema, con lo cual se reduce mucho el código

TextWindow.Write("Ingresa un nro: ")

num = TextWindow.ReadNumber()
contador = Math.Floor((Math.Log(num) + 1))

TextWindow.WriteLine("Tiene " + contador + " digitos")

'Escrito por Gustavo J. Cerda Nilo, noviembre 2015
 
 

7 comentarios:

  1. #este tiene mas logica ;)
    a=int(input("ingress numb"))
    cont=1
    while(a>=10):
    a=a/10
    cont += 1
    print(cont)

    ResponderEliminar
  2. Gracias por el aporte me ayudo mucho!

    ResponderEliminar
  3. El error que se produce al hacer contador = (log10(num) + 1); es que falla con el 0 o con números negativos pues no existe el logaritmo de 0 ni de negativo. Habría que preguntar si el número es 0 y para los negativos se hace abs para pasarlos a positivo.

    ResponderEliminar
  4. pero madre mia willy, gracias

    ResponderEliminar

C++ El apuntador This

El apuntador This En C++, cada objeto tiene acceso a su propia dirección a través de un puntero o apuntador denominado This. Lo...