Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: suso teruel en 10 Julio 2012, 11:34 am



Título: Ayuda por favor con un switch con 3 cases
Publicado por: suso teruel en 10 Julio 2012, 11:34 am

Buenos días,
Por favor a ver si me podeis ayudar con este código. Sobre todo cómo funcionan estos casos. La salida la conozco porque la he compilado, el problema como os comento es que no sé cómo van los casos.

main(){
   int i, x= 0, y=1;
   for(i=0; i<3; i++) {
      switch(i) {
         case 0: x=++y;
         break;
         case 1:
         case 2: x=y++;
         break;
         default: x+=3;
   }
   printf("%d,%d, \n", x, y);
   system("pause");   
   }
}

Gracias


Título: Re: Ayuda por favor con un switch con 3 cases
Publicado por: DickGumshoe en 10 Julio 2012, 13:19 pm
¡Hola!

Cuando pones x=++y, significa que primero incrementas en 1 a y, y después le asignas ese valor a x.

Cuando pones x = y++, significa que primero le asignas el valor a x, y después incrementa y en 1.

Al default nunca va a llegar en ese bucle, pero x+=3 es equivalente a x = x + 3.

El case 1 no tiene nada, por lo que nunca llegará a hacer nada.

Por ejemplo:

int x = 2, y = 2;

x = y++; // ahora x=2, y=3
x = ++y; //ahora x=4, y=4
x += 3; //ahora x=7

Saludos!


Título: Re: Ayuda por favor con un switch con 3 cases
Publicado por: do-while en 10 Julio 2012, 18:45 pm
¡Buenas!

El case 1 no tiene nada, por lo que nunca llegará a hacer nada.

Eso no es correcto. Cuando una etiqueta dento de un switch no termina con break, las siguientes sentencias se siguen ejecutando hasta llegar a un break o al final del switch:

Código
  1. switch(numero)
  2. {
  3.    case 2:
  4.    case 3:
  5.    case 5:
  6.    case 7:
  7.        printf("%d es un primo entre 1 y 10\n", numero);
  8.        break;
  9.  
  10.    case 1:
  11.    case 4:
  12.    case 6:
  13.    case 8:
  14.        printf("%d esta entre 1 y 10, pero no es primo\n", numero);
  15.        break;
  16.  
  17.    default:
  18.        printf("No quiero pensar nada sobre las propiedades de %d\n");
  19. }
  20.  

Si lo meteis en un for de 1 a 10 (o el intervalo que querais), vereis como funciona el codigo.

¡Saludos!


Título: Re: Ayuda por favor con un switch con 3 cases
Publicado por: suso teruel en 10 Julio 2012, 20:24 pm
Muchas gracias por vuestra ayuda
Saludos,