[ Foro de C ]

Dudas sobre el test del tema 3

07-May-2006 15:19
Yolanda Arrastia
3 Respuestas

En esta pregunta no entiendo pq se muestra un 11, si pone q es menor que 10...

for (i=0; i<=10; i++); printf("%d ", i);

Se mostraría en pantalla el número 11

*******************************************

Aqui no es de la z a la a? o aqui pregunta de la a a la z? entonces seria letra++ en vez de letra--, a eso se refiere?

for ( letra= 'a' ; letra<= 'z' ; letra--)

printf( "%c" , letra);

Es incorrecto, cuenta al revés de lo que debería

*******************************************

Aqui no deberia decir q es incorrecto? le falta el = al if ¿o el if no afecta al printf?

int x=1;

if (x=2) printf("Hola"); else printf("Adios");

Se escribiría en pantalla Hola
07-May-2006 16:24
Yusuke Urameshi

A ver..... en la primera, se mostraria un 11 en pantalla por que recuerda que cuenta del 0 al 10, y del 0 al 10 hay 11 nuemros sonrisa....

>--------------------------------------<

En el segundo creo que deberia dar un error de compilacion por que 'letra--' deberia ser 'letra ++' como tu dices... tendria que probarlo confuso

>--------------------------------------<

.....Y en el tercero en la exprecion '(x=2)' pienso que no influye sobre el printf ("Hola") porque... si fuera '(x==2)' si influiria, por lo tanto no reconoce el '(x=2)' y muestra en pantalla Hola,

Espero que aya sido de algo mi ayuda...  xD  un saludo y a estudiar muxo guiño


07-May-2006 16:45
Taisen Tetsu

en la primera: es 11 porque hace primero el for cuando i va pasando del 0 al 10 pero en la ultima pasada del for en la que i es = a 10 hace el ultimo i++ asi cuando sale del for i vale 11.

la segunda: si que pregunta de la 'a' a la 'z' y deberia ser letra++ por eso esta mal en vez de contar letra++ cuenta al reves letra-- y haria cosas raras a parte de que nunca acabaría el for. Vamos que a saber que puede salir de ahí, pero si que compila y va.

la tercera: al poner if (x=2) a x le estamos dando el valor 2 en vez de comparar (vamos que si que lo reconoce) por eso siempre va a ser verdad el if y va a cumplir la condicion. Por eso saldra siempre "hola" y nunca adios. Para que funcione bien tiene que ser == para que haga la comparacion en vez de darle ese valor.

Mas o menos viene a ser eso risa


07-May-2006 20:00
Nacho Cabanes (+83)

Las respuestas del señor Tetsu son casi impecables:

- En la primera hay un ; después del for, luego repite NADA desde que i vale 0 hasta que vale 10. Cuando vale 11, termina el "for" (ya no se cumple la condición) y se pasa a la siguiente orden (escribir el valor de i, que ya es 11).

- Segunda: correcto, para llegar de la "a" a la "z" habría que sumar, no que restar. Compila, pero hay un falta de coherencia que hará que no funcione bien.

- Tercera: correcto, el fallo (que todavía cometeis con cierta frecuencia) es poner una asignación (x=2) en vez de una comparación (x==2). El resultado de  x=2  es 2, que en C se evalúa como "verdad" (0=falso, otra cosa=verdad), por lo que siempre se escribirá Hola.

N.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)