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
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
eres grandeee
ResponderEliminar#este tiene mas logica ;)
ResponderEliminara=int(input("ingress numb"))
cont=1
while(a>=10):
a=a/10
cont += 1
print(cont)
gracias crack.
Eliminarah q pvto
ResponderEliminarGracias por el aporte me ayudo mucho!
ResponderEliminarEl 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.
ResponderEliminarpero madre mia willy, gracias
ResponderEliminar