elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda por favor con un switch con 3 cases
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda por favor con un switch con 3 cases  (Leído 2,699 veces)
suso teruel

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ayuda por favor con un switch con 3 cases
« 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


En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Ayuda por favor con un switch con 3 cases
« Respuesta #1 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!


En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Ayuda por favor con un switch con 3 cases
« Respuesta #2 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!
« Última modificación: 10 Julio 2012, 18:56 pm por do-while » En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
suso teruel

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ayuda por favor con un switch con 3 cases
« Respuesta #3 en: 10 Julio 2012, 20:24 pm »

Muchas gracias por vuestra ayuda
Saludos,
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda en un menu en switch « 1 2 3 »
Programación C/C++
poisonkhriz 27 24,038 Último mensaje 20 Marzo 2011, 19:40 pm
por Akai
Ayuda con switch(urgente)
Programación C/C++
eltyh 3 3,000 Último mensaje 5 Junio 2011, 00:17 am
por eltyh
una pequeña ayuda con el comando switch
Programación C/C++
alkimista1988 3 3,072 Último mensaje 20 Junio 2011, 18:49 pm
por alkimista1988
ayuda con red+switch+router
Redes
SystemLinux 0 2,881 Último mensaje 7 Noviembre 2011, 01:53 am
por SystemLinux
[C] for loop y switch cases
Programación C/C++
edr89 3 2,213 Último mensaje 19 Mayo 2013, 22:55 pm
por leosansan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines