Principiante · while + división
Contar los dígitos
Lee un entero e imprime cuántos dígitos tiene. Este es el bucle que enseña % 10 y / 10 — las dos operaciones detrás de todo problema de manipulación de dígitos.
Problema
Entrada: un entero n (−10⁹ ≤ n ≤ 10⁹).
Salida: el número de dígitos de n (el signo menos no cuenta).
Ejemplo:
| Entrada | Salida |
|---|---|
7 | 1 |
2048 | 4 |
0 | 1 |
Tu solución
Entrada personalizada para "Probar mi entrada"
La corrección se ejecuta por completo en tu navegador contra pruebas ocultas. Tu código se guarda localmente mientras escribes. Ctrl+Enter corrige.
¿Atascado? Pistas
Pista 1 — las dos operaciones
n % 10 es el último dígito; n / 10 es el número sin él (¡división entera!). 2048 → 204 → 20 → 2 → 0 — cuenta los pasos hasta cero.
Pista 2 — las dos trampas
Trampa 1: while (n > 0) nunca entra con n = 0 — imprimirías 0 dígitos, pero 0 tiene uno. Trampa 2: la entrada negativa loopea para siempre con n > 0… haz Math.Abs(n) primero.
Solución (¡inténtalo primero!)
int n = Math.Abs(int.Parse(Console.ReadLine()));
int digitos = 0;
do
{
digitos++;
n = n / 10;
} while (n > 0);
Console.WriteLine(digitos);
// el atajo: ToString() y deja que Length cuente
int n = int.Parse(Console.ReadLine());
Console.WriteLine(Math.Abs(n).ToString().Length);
El do-while resuelve n = 0 gratis — el cuerpo corre una vez antes de comprobar la condición. Has terminado el primer bloque del set: vuelve a la lista o lee por qué la división entera hace funcionar el bucle.