Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/12/2014, 15:55
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 2 meses
Puntos: 38
Respuesta: if dentro de switch case

o Bien puedes poner un case anidado o bien puedes hacer algo como eso:
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main () {
  5.     int opcion = 0;
  6.     int seguir = 0;
  7.     printf ( "Opcion de 1 a 6, para salir 0: " );
  8.     scanf ( "%d%*c", &opcion );
  9.    
  10.     if ( opcion == 3 ) {
  11.         printf ( "Quieres pasar pos los seguientes casos? 0-no 1-si: " );
  12.         scanf ( "%d%*c", &seguir );
  13.        
  14.     }
  15.    
  16.     do {
  17.    
  18.         switch ( opcion ) {
  19.             case 1:
  20.                 printf ( "Estamos en caso1\n" );
  21.                 break; //
  22.                
  23.             case 2:
  24.                 printf ( "Estamos en caso2\n" );
  25.                 break;
  26.                
  27.             case 3:
  28.                 printf ( "Estamos en caso3 Especial. " );
  29.                
  30.                 if ( seguir ) {
  31.                     //simplemente no hacemos nada y pasara directo XDD
  32.                     printf ( "Pasaremos por las demas opciones desde aqui." );
  33.                 } else {
  34.                     printf ( "Pero has dicho que no pasaras por los demas casos." );
  35.                     break;
  36.                 }  // si seguir es falso entonces no pasa por ningun caso
  37.                
  38.             //no tiene break
  39.             case 4:
  40.                 printf ( "\nEstamos en caso4\n" );
  41.                
  42.             //no tiene break
  43.             case 5:
  44.                 printf ( "Estamos en caso5\n" );
  45.                
  46.             //no tiene break
  47.             case 6:
  48.                 printf ( "Estamos en caso6 Ultimo. Este tiene break;\n" );
  49.                 //como ves hemos llegado aqui a causa de no haber breaks en los casos anteriores, pero este al ser el ultimo deberia llevar
  50.                 break;
  51.                
  52.             default:
  53.                 printf ( "Adios!" );
  54.                 break;
  55.         }
  56.        
  57.         printf ( "\nOpcion de 1 a 6, para salir 0: " );
  58.         scanf ( "%d%*c", &opcion );
  59.        
  60.         if ( opcion == 3 ) {
  61.             printf ( "Quieres pasar pos los seguientes casos? 0-no 1-si: " );
  62.             scanf ( "%d%*c", &seguir );
  63.            
  64.         }
  65.     } while ( opcion );
  66.    
  67.    
  68.     getchar();
  69.    
  70.     return 0;
  71. }

Como bien puedes ver, lo que evita que pases por todos los demás casos son esos breaks;. Ponerlos o no ponerlos es cosa tuya, si no lo pones debes ir controlando a cuales debes pasar.

Eso se llama condiciones anidadas o sentencias anidadas. Puedes buscar por ejemplo en google "if anidado en switch" o switch anidado en switch para ver ejemplos. etc etc
http://v1.minidosis.org/C++/Alternativas/Switch/

Suerte... Aun no me paso el pedo jajaja

Última edición por vangodp; 25/12/2014 a las 16:12