Hola Xan,<br><br>
<div class="gmail_quote">2010/12/22 Martin Strahd <span dir="ltr"><<a href="mailto:xaninverno@gmail.com">xaninverno@gmail.com</a>></span><br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">Hola 
<div><br></div>
<div>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.</div></blockquote>
<div> </div>
<div>Antes de continuar, te doy la bienvenida a esta lista y al "mundillo" de la programación.</div>
<div> </div>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div>El código es el siguiente</div></blockquote>
<div> </div>
<div>Veamos el código fuente y el problema.</div>
<div> </div>
<div>[CORTE]</div>
<div><em></em> </div>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div>
<div>El problema reside en el doble bucle for:</div>
<div><br></div>
<div>
<div> <i>for (f = 'a'; f<= 'z'; f++);</i></div>
<div><i>    {</i></div>
<div><i>        putchar(f);</i></div>
<div><i>        for (c = 'a'; c<= 'z'; c++)</i></div>
<div><i>        printf("%3d", tabla[f-'a'][c - 'a']);</i></div>
<div><i>        putchar('\n');</i></div>
<div><i>    }</i></div></div>
<div><br></div>
<div><br></div>
<div>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').</div>
</div></blockquote>
<div> </div>
<div>El problema es que hay un error de programación porque existe un punto y coma al final del primer bucle 'for'; esto es,</div>
<div> </div><em>for (f = 'a'; f<= 'z'; f++);</em> 
<div> </div>
<div>Por lo tanto, este bucle se ejecuta correctamente, que cuando termina, la variable 'f' es el carácter '}' cuyo código ASCII es 123.</div>
<div> </div>
<div>Lo que quieres es que el bucle afecte al bloque de sentencias posterior. Elimina este punto y coma al final. Esto es,</div>
<div> </div>
<div>for( f = 'a'; f<= 'z'; f++ )<br>{<br>  putchar( f );<br>  for( c = 'a'; c<= 'z'; c++ )<br>    printf( "%3d", tabla[f-'a'][c - 'a'] );<br>  putchar( '\n' );<br>
}</div>
<div> </div>
<div> </div>
<div>Espero haber aclarado la duda.</div>
<div> </div>
<div>Steven</div>
<div> </div></div>