Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Switch case dentro de otro switch C

Estas en el tema de Switch case dentro de otro switch C en el foro de C/C++ en Foros del Web. Hola, tengo que hacer un codigo donde voy a hacer un menu con varias opciones y que cada opcion de otro submenu me explico: Cita: ...
  #1 (permalink)  
Antiguo 10/08/2014, 14:47
 
Fecha de Ingreso: diciembre-2012
Ubicación: Jardim Alegre
Mensajes: 25
Antigüedad: 11 años, 3 meses
Puntos: 0
Switch case dentro de otro switch C

Hola, tengo que hacer un codigo donde voy a hacer un menu con varias opciones y que cada opcion de otro submenu me explico:

Cita:
Realizar un programa que permita mostrar las opciones
Menu:
1. Estructuras selectivas I
(Submenu)
a. Problema 1
b. Problema 2
2. Estructuras selectivas II
(Submenu)
a. Problema 3
b. Problema 4
3. Estructuras selectivas III
(Submenu)
a. Problema 5
b. Problema 6
4. Salir
El problema es que cuando en el primer submenu le doy que me de la opcion 2 osea el problema 2 me muestra el 1, si pongo 1 si pone el que es el 1 pero no con el 2 estoy algo confuso .
Los programas son copy paste de programas que ya hice les pongo el codigo que llevo.
Código:
#include <stdio.h>
int main (void)
{
	float a, b, r, f, p, h, pi=3.1416, m,mc, opcion2;
	int opcion;
	
	
		
	printf("\tSeleccione el numero del tipo de problema que deseas: ");
	printf("\n1. Estructuras selectivas IF");
	printf("\n2. Estructuras selectivas multiples");
	printf("\n3. Estructuras de repeticion FOR");
	printf("\n4. Salir ");
	scanf("%d", &opcion);
		do{
	switch (opcion)
	{
		case 1:
		printf("\tSeleccione el numero operacion que desea hacer: ");
		printf("\n1. Algoritmo de relacion en 2 numeros");
		printf("\n2. Dosis Medicamento");
		printf("\n3. Regresar");
		scanf("%d", &opcion2);
		switch (opcion)
	
			
			case 1:
			printf("\n1. Algoritmo de relacion en 2 numeros");
			printf("introduzca valor de a: ");
			scanf("%d", &a);
			printf("introduzca valor de b: ");
			scanf("%d", &b);
			switch (opcion)
			if(a<b) 
			{
		        	
			printf("a es menor que b\n");
			
			
			}
			if(a<=b) 
			{
		        	
			printf("a es menor igual que b\n");
				
			}
		
			if(a<b) 
			{
		        	
			printf("a no es mayor que b\n");
				
			
			}
			if(a<=b) 
			{
		        	
			printf("a no es mayor igual que b\n");
				
			
			}
			if(a!=b) 
			{
		        	
			printf("a es diferente de b\n");
				
			
			}
			if(a!=b) 
			{
		        	
			printf("a no es igual a b\n");
				
			
		
			}
			break;
			
			case 2:
				printf("\tSeleccione Genero\n");
				printf("Escriba 1 si es Mujer o 2 si es Hombre: ");
				scanf("%d",&opcion);
				switch (opcion)
			{
			case 1:
			printf("indica masa corporal: ");   //Mujer
			scanf("%d", &mc);
			
		    if(mc>80)
			{
		        	
			printf("Su dosis es de 800 mg\n");
			break;
		    }  
		    if(mc>=60&&mc<80)
			{
		        	
			printf("Su dosis es de 600 mg\n");
			break;
		    }  
		    if(mc<60)
			{
		        	
			printf("Su dosis es de 400 mg\n");
			break;
		    }  
		    
		    case 2:
			printf("indica masa corporal: ");   //Hombre
			scanf("%d", &mc);
			
		    if(mc>100)
			{
		        	
			printf("Su dosis es de 1000 mg\n");
			break;
		    }  
		    if(mc>=80&&mc<100)
			{
		        	
			printf("Su dosis es de 800 mg\n");
			break;
		    }  
		    if(mc>=60&&mc<80)
			{
		        	
			printf("Su dosis es de 600 mg\n");
			break;
		    }  
		     if(mc<60)
		    {
		        	
			printf("Su dosis es de 400 mg\n");
			break;
      
}
	
	}

	break;
	
	default:
printf("error ingrese de nuevo");
	break;
	
	}
	
	printf("\tSeleccione el numero del tipo de problema que deseas: ");
	printf("\n1. Estructuras selectivas IF");
	printf("\n2. Estructuras selectivas multiples");
	printf("\n3. Estructuras de repeticion FOR");
	printf("\n4. Salir ");
	scanf("%d", &opcion);
	
}
	while(opcion!=5);
	

	return 0;
	
	
}
PD: El do while es opcional.
Gracias de antemano
  #2 (permalink)  
Antiguo 10/08/2014, 15:50
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 7 meses
Puntos: 83
Respuesta: Switch case dentro de otro switch C

No he revisado tu codigo, pero creo que si echas otro vistazo mas tranquilamente al segundo switch y a la linea previa podras ver algo interesante:


Código C:
Ver original
  1. ...
  2. switch (opcion)
  3.     {
  4.         case 1:
  5.         printf("\tSeleccione el numero operacion que desea hacer: ");
  6.         printf("\n1. Algoritmo de relacion en 2 numeros");
  7.         printf("\n2. Dosis Medicamento");
  8.         printf("\n3. Regresar");
  9.         scanf("%d", &opcion2);
  10.         switch (opcion)
  11. ...

Si escaneas en 'opcion2', porque evaluas de nuevo 'opcion' en vez de 'opcion2'?

Saludos
vosk
  #3 (permalink)  
Antiguo 10/08/2014, 20:03
 
Fecha de Ingreso: diciembre-2012
Ubicación: Jardim Alegre
Mensajes: 25
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Switch case dentro de otro switch C

ya le quite opcion2 y lo deje en opcion, el problema es que ahora me sale,
"Error] case label '2' not within a switch statement" se que tiene que ver con las llaves pero estoy medio perdido que hacen ustedes para revisar que las llaves esten bien?
  #4 (permalink)  
Antiguo 10/08/2014, 20:07
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Switch case dentro de otro switch C

switch lleva llaves, ¿todos tus switch tienen llaves?
__________________
Visita mi perfil en LinkedIn
  #5 (permalink)  
Antiguo 10/08/2014, 23:02
 
Fecha de Ingreso: diciembre-2012
Ubicación: Jardim Alegre
Mensajes: 25
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Switch case dentro de otro switch C

Segun yo si, pero me confundo con tantos case y switch entonces siento que me falta en alguna parte.
  #6 (permalink)  
Antiguo 10/08/2014, 23:14
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Switch case dentro de otro switch C

Creo que será mas educativo si descubres tu mismo el problema, asi que toma esto como un empujon a hacerlo.
Revisa la llave inicial de cada switch. ¿Existe llave inicial para cada switch en el codigo que has puesto al inicio?
__________________
Visita mi perfil en LinkedIn

Etiquetas: case, condicional, switch
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:50.