[C con Clase] Duda de novato con un bucle for
Steven Davidson
srd4121 en njit.edu
Mie Dic 22 20:37:20 CET 2010
Hola Xan,
2010/12/22 Martin Strahd <xaninverno en gmail.com>
> Hola
>
> Me llamo Xan y estoy empezando a programar en C y me ha surgido un pequeño
> problema con un código de ejemplo de un manual con un bucle for anidado.
>
Antes de continuar, te doy la bienvenida a esta lista y al "mundillo" de la
programación.
> El código es el siguiente
>
Veamos el código fuente y el problema.
[CORTE]
**
> El problema reside en el doble bucle for:
>
> *for (f = 'a'; f<= 'z'; f++);*
> * {*
> * putchar(f);*
> * for (c = 'a'; c<= 'z'; c++)*
> * printf("%3d", tabla[f-'a'][c - 'a']);*
> * putchar('\n');*
> * }*
>
>
> Depurando el programa y observando las variables f comienza con el valor
> 123 ('}') cuando debería empezar con el 97 ('a'). Lo curioso es que en el
> bucle de la variable c, que es idéntico, se ejecuta correctamente, tomando c
> los valores del 97 al 122 ('a' a 'z').
>
El problema es que hay un error de programación porque existe un punto y
coma al final del primer bucle 'for'; esto es,
*for (f = 'a'; f<= 'z'; f++);*
Por lo tanto, este bucle se ejecuta correctamente, que cuando termina, la
variable 'f' es el carácter '}' cuyo código ASCII es 123.
Lo que quieres es que el bucle afecte al bloque de sentencias posterior.
Elimina este punto y coma al final. Esto es,
for( f = 'a'; f<= 'z'; f++ )
{
putchar( f );
for( c = 'a'; c<= 'z'; c++ )
printf( "%3d", tabla[f-'a'][c - 'a'] );
putchar( '\n' );
}
Espero haber aclarado la duda.
Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20101222/7df0ec87/attachment.html>
Más información sobre la lista de distribución Cconclase