Estoy tratando de trabajar en un progtwig donde el usuario ingresa un número aleatorio y el progtwig ingresa en una lista del 0 al 9.
Por ejemplo, digamos que el usuario ingresa el número 12, entonces la pantalla debería verse así:
0123456789012
Donde ‘2’ al final indica el número 12. He intentado esto pero me da un bucle infinito y no sé cómo decirle que pare:
for(i = 0; i < cells; i++) { i = i%10; printf("%d", i); }
Las celdas aquí es el número que ingresa el usuario.
El problema es que estás cambiando i
en el bucle. Debe iterar tantas veces como la entrada. Ya casi está ahí, pero hace un ciclo para siempre porque está modificando i
de tal manera que nunca será más grande o igual que las cells
para cells > 10
.
Prueba esto:
for( int i = 0; i < cells; ++i ) { printf( "%d", i % 10 ); }
También...
0123456789012
Donde '2' al final indica el número 12.
El segundo 2
es el número 13, no el 12 🙂
¡No modifique la variable original dentro del bucle! Cree una nueva variable para mantener el valor de i%10
.
No quieres configurar i = i%10
. Crea otra variable y configúralo en i%10
Cuando haces i = i%10;
realmente alteras los contenidos de i
que el bucle está utilizando para contar. Lo que deberías estar haciendo es calcular el mod dentro del printf como
printf("%d", i%10);
o almacenar el mod en otra variable e imprimir que gusta
mod_i = i % 10; printf("%d", mod_i);
El problema es i = i%10
; está cambiando el valor de i
a i % 10
. Entonces, las cells
son mayores a 10, en algún punto i tendrá el valor 10 al comienzo del bucle y luego se le asignará el valor 0 ( 10 % 10
). Por lo tanto, su bucle se repetirá para siempre ya que i < cells
siempre serán falsas.
La solución es eliminar la asignación por completo y solo printf("%d", i % 10)
.