Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Beginner Web en 18 Abril 2019, 06:04 am



Título: contar numeros de un numero
Publicado por: 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

 :huh:


Título: Re: contar numeros de un numero
Publicado por: EdePC en 18 Abril 2019, 08:05 am
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í:

Código
  1. #include <stdio.h>
  2. int main() {
  3.  char number[] = "000000";
  4.  int count = 0;
  5.  while ( number[count] != '\0' ) {
  6.    count++;
  7.  }
  8.  printf("%d\n", count);
  9. }


Título: Re: contar numeros de un numero
Publicado por: Beginner Web en 18 Abril 2019, 08:19 am
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:


Título: Re: contar numeros de un numero
Publicado por: BloodSharp en 18 Abril 2019, 08:35 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

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:

Tené en cuenta que 000000, como 000, como 00, como infinitos ceros solamente son 0.
(https://i.imgur.com/pZHE3hl.png)

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#


Título: Re: contar numeros de un numero
Publicado por: Serapis en 18 Abril 2019, 10:04 am
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:
Código:
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
 


Título: Re: contar numeros de un numero
Publicado por: CalgaryCorpus en 18 Abril 2019, 16:03 pm
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:

Código:
   digitos = 1;
   while(n > 9) {
     digitos++
     n /= 10
   }

Para numeros negativos, hay que hacer al inicio el equivalente a   n = abs(n)