Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/10/2010, 07:01
Avatar de Munire
Munire
 
Fecha de Ingreso: julio-2010
Ubicación: en el ciberdespacio (España)
Mensajes: 150
Antigüedad: 14 años, 4 meses
Puntos: 4
ayuda con switch

Hola, necesito ayuda con este programa, pues no localizo el fallo. yo creo que esta bien programado pero al ejecutarlo y darle a 2 por ejemplo (que es crear fichero) se ejecutan los casos crear leer y default, y no entiendo por que... incluso dandole a 5 (que deberia salirse del bucle) no funciona.

abajo he puesto una captura de la consola para que entendais lo que os digo

saludos y gracias

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void Programa();
  5. void inicioPrograma();
  6. void menuPrograma();
  7. void crearFichero(char *nombreFichero);
  8. void leerFichero(char *nombreFichero);
  9. void escribirFichero(char *nombreFichero);
  10. void borrarFichero(char *nombreFichero);
  11.  
  12.  
  13. enum _estado {_inicioPrograma, _menuPrograma, _crearFichero, _leerFichero, _escribirFichero, _borrarFichero, _finPrograma};
  14. enum _estado estado;
  15.  
  16. int main()
  17. {
  18.    
  19.     estado = _inicioPrograma;
  20.     Programa();
  21.  
  22.     system("pause");
  23.     return 0;
  24.  
  25. }
  26.  
  27. //FUNCIONES
  28.  
  29.  
  30.  
  31. void Programa()
  32. {
  33.  
  34.     char nombreFichero[40];
  35.  
  36.     do{
  37.         switch(estado){
  38.         case _inicioPrograma:   inicioPrograma();
  39.         case _menuPrograma:     menuPrograma();
  40.         case _crearFichero:        crearFichero(nombreFichero);
  41.         case _leerFichero:      leerFichero(nombreFichero);
  42.         case _escribirFichero:  escribirFichero(nombreFichero);
  43.         case _borrarFichero:    borrarFichero(nombreFichero);
  44.         default: printf("...default...");
  45.         }    
  46.     }while(estado != _finPrograma);
  47.     printf("he salido de while");
  48.  
  49.     //for(;;)
  50.     //{
  51.     //if(estado == _finPrograma){break;}
  52.     //else if(estado == _leerFichero){leerFichero(nombreFichero);}
  53.     //else if(estado == _crearFichero){crearFichero(nombreFichero);}
  54.     //else if(estado == _menuPrograma){menuPrograma();}
  55.     //else if(estado == _inicioPrograma){inicioPrograma();}
  56.     //}
  57.  
  58.  
  59. }
  60.  
  61. void inicioPrograma()
  62. {
  63.     printf("Bienvenido. Pulse ENTER para continuar...");
  64.     getchar();
  65.     estado = _menuPrograma;
  66.    
  67. }
  68.  
  69. void menuPrograma()
  70. {
  71.     int modo;
  72.     modo = 0;
  73.     printf("\nMENU:\n\n");
  74.     printf("1.- Crear nuevo fichero.\n");
  75.     printf("2.- Leer fichero\n");
  76.     printf("3.- Escribir en fichero\n");
  77.     printf("4.- Borrar fichero\n");
  78.     printf("5.- Salir\n");
  79.     printf("=> ");
  80.     scanf("%d", &modo);
  81.     switch(modo)
  82.     {
  83.     case 1:    estado = _crearFichero;
  84.     case 2:    estado = _leerFichero;
  85.     case 3:    estado = _escribirFichero;
  86.     case 4:    estado = _borrarFichero;
  87.     case 5:    estado = _finPrograma;
  88.     }
  89.  
  90. };
  91.  
  92. void crearFichero(char *nombreFichero)
  93. {
  94.     printf("creando fichero...");
  95.     estado = _menuPrograma;
  96. };
  97.  
  98. void leerFichero(char *nombreFichero)
  99. {
  100.     printf("leyendo fichero...");
  101.     estado = _menuPrograma;
  102. };
  103.  
  104. void escribirFichero(char *nombreFichero){};
  105.  
  106. void borrarFichero(char *nombreFichero){};