o Bien puedes poner un case anidado o bien puedes hacer algo como eso:
Código C:
Ver original#include <stdio.h>
#include <stdlib.h>
int main () {
int opcion = 0;
int seguir = 0;
printf ( "Opcion de 1 a 6, para salir 0: " ); scanf ( "%d%*c", &opcion
);
if ( opcion == 3 ) {
printf ( "Quieres pasar pos los seguientes casos? 0-no 1-si: " ); scanf ( "%d%*c", &seguir
);
}
do {
switch ( opcion ) {
case 1:
printf ( "Estamos en caso1\n" ); break; //
case 2:
printf ( "Estamos en caso2\n" ); break;
case 3:
printf ( "Estamos en caso3 Especial. " );
if ( seguir ) {
//simplemente no hacemos nada y pasara directo XDD
printf ( "Pasaremos por las demas opciones desde aqui." ); } else {
printf ( "Pero has dicho que no pasaras por los demas casos." ); break;
} // si seguir es falso entonces no pasa por ningun caso
//no tiene break
case 4:
printf ( "\nEstamos en caso4\n" );
//no tiene break
case 5:
printf ( "Estamos en caso5\n" );
//no tiene break
case 6:
printf ( "Estamos en caso6 Ultimo. Este tiene break;\n" ); //como ves hemos llegado aqui a causa de no haber breaks en los casos anteriores, pero este al ser el ultimo deberia llevar
break;
default:
break;
}
printf ( "\nOpcion de 1 a 6, para salir 0: " ); scanf ( "%d%*c", &opcion
);
if ( opcion == 3 ) {
printf ( "Quieres pasar pos los seguientes casos? 0-no 1-si: " ); scanf ( "%d%*c", &seguir
);
}
} while ( opcion );
return 0;
}
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