contar numeros de un numero

Iniciado por Beginner Web, 18 Abril 2019, 06:04 AM

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

Beginner Web

hola chicos, como hago para contar los digitos de un numero?
por ejemplo si coloco 0000000000 me devuelva 10 pero sin usar ningun tipo de estructura solo como maximo se puede usar while,do while y for gracias  :laugh:
dato de entrada un entero 000000
dato de salida otro entero 6

:huh:
7w7

EdePC

Saludos,

- Habría que entender ese "número" como un String ya que difícilmente va a haber un entero 000000.

- Sería cosa de iterar cada caracter del String y contar hasta que se acaben con caracteres. En C sería algo así:

#include <stdio.h>
int main() {
  char number[] = "000000";
  int count = 0;
  while ( number[count] != '\0' ) {
    count++;
  }
  printf("%d\n", count);
}

Beginner Web

Si pero el dato de entrada debe almacenarse en una variable de tipo entero, no se debe utilizar otros tipos de datos, y si no se puede bueno fue  :rolleyes:
7w7

BloodSharp

#3
Cita de: Beginner Web en 18 Abril 2019, 06:04 AM
hola chicos, como hago para contar los digitos de un numero?
por ejemplo si coloco 0000000000 me devuelva 10 pero sin usar ningun tipo de estructura solo como maximo se puede usar while,do while y for gracias  :laugh:
dato de entrada un entero 000000
dato de salida otro entero 6

Cita de: Beginner Web en 18 Abril 2019, 08:19 AMSi pero el dato de entrada debe almacenarse en una variable de tipo entero, no se debe utilizar otros tipos de datos, y si no se puede bueno fue  :rolleyes:

Tené en cuenta que 000000, como 000, como 00, como infinitos ceros solamente son 0.


EDIT: Aunque se tendría que también en caso de ser cero asignar el contador definitivo a 1 sin pasar por el for. Me faltó ese detalle agregar... :silbar:
EDIT2: Y agregar también verificación del valor absoluto...  :-[

B#



Serapis

#4
Como ya te han dicho los ceros a la izquierda de un número no valen nada, no existen, luego si se debe considerar ceros a la izquierda tiene que ser un string.

Si es un numero entero, tienes que usar un bucle:

Si (numero <> 0)  // distinto de cero
   Hacer mientras (numero <> 0)
       cifras +=1
       numero = (numero \10)  // una división entera.
   repetir
sino
   cifras = 1
fin si

 

CalgaryCorpus

Puesto que los numeros deben tener al menos 1 digito, es posible empezar la cuenta con 1 y modificar la condicion del ciclo y con ello se ahorra la comparacion inicial contra 0.
Algo asi:


   digitos = 1;
   while(n > 9) {
     digitos++
     n /= 10
   }


Para numeros negativos, hay que hacer al inicio el equivalente a   n = abs(n)
Aqui mi perfil en LinkedIn, invitame un cafe aqui