[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