PDA

Ver la versión completa : [Ayuda] Duda de programación en C



popihmt
16/06/2012, 13:49
Buenas, le estoy intentando ayudar a un colega en unas dudas de programación en C, y yo ya lo tengo un poco olvidado.

Tenemos un programa ya complilado, y tenemos que decir las salidas que da en pantalla:


#include <stdio.h>
#include <stdlib.h>

main()
{ int i=1, j=0, x=0, s;
while ((i<6)&&(j<i))
{ s=i+j-2;
switch (s)
{ case 0: x=x+2;
break;
case 1: x=x+3;
break;
}
printf ("%d\n",x);
i++;
j++;
}
system("pause");
}

La salida es 0 3 3 3 3 3 (en vertical)

La duda es: por qué no varía el valor de la x, y se sigue manteniendo el 3? es decir, or qué no se guarda el nuevo valor de x, y vuelve a valer "0"?

Grasias famigüitos!!

Karkayu
16/06/2012, 15:21
X vale 0 fuera de las estructura 'while'.

Una vez dentro del 'while', para que el valor de X cambie se debe entrar en la estructura 'switch'.
Esto ocurre cuando S vale 0 ó 1. El valor de S se calcula sumando I y J y restando un 2.

Haz la cuenta a mano y veras que en la primera iteracion del 'while', S vale 1+0-2= -1 (no entra en el switch), en la segunda vale 2+1-2 = 1 (ENTRA en el switch y por tanto cambia el valor de X), y en las siguientes iteraciones ya no entra mas en el 'switch' (la S toma valores mayores a 1), ergo el valor de X no varia más.

popihmt
16/06/2012, 15:48
muchas gracias!