Ayuda con switch(urgente)

Iniciado por eltyh, 18 Mayo 2011, 07:25 AM

0 Miembros y 1 Visitante están viendo este tema.

eltyh

Estoy empezando a programar en c. Ayer fue el primer día que empece con el comando switch, en uno de los ejercicios que tengo que hacer me da error en el break. EL programa tiene como objetivo pedir un numero, recogerlo y mostrar que hacer con  ese numero.En este punto aparece un menú que muestra a.-Pares(los 10 números pares siguientes a él, si el es par se incluye);b.-Impares(los 10 numeros impares siguientes a él, si el es par se incluye);c.-Todos(los 10 numeros siguientes a él).El programa lo he planteado asi:


# include <stdio.h>
# include <conio.h>
int main ()
{
    int x,cont=0;
    char  opcion;   
    printf("Introduzca el numero deseado: ");
    scanf ("%d",&x);
    do {
    printf("Introduzca la operacion deseada: \n a. Pares \n b. Impares \n c. Todos \nElige opcion: ");
    fflush(stdin);
    scanf("%c",&opcion);
    if (opcion!='a'&& opcion!='b'&& opcion!='c')
    {
    printf("Error opcion no valida. Seleccione a. b. o c.");
    }
    else
    {
    }
    }
    while (opcion=='a'||opcion=='b'||opcion=='c');
    {
    switch((char)opcion)
     case 1: case 'a':
        cont=0;
        if (x%2!=0)
        {
        x=x + 1;
        printf ("%d",x);
        cont ++;
        }
        else
        while(cont<9)
        {
        x=x+2;
        printf("%d",x);
        cont ++;
        }
        break;
    case 'b':
        cont=0;
        if (x%2==0)
        {
        x=x + 1;
        printf ("%d",x);
        cont ++;
        }
        else
        {
        }
        for (; cont<9;cont ++)
        x=x+2;
        printf ("%d",x);
        break;
    case 'c':
        {
        cont=0;
        for (; cont<10;cont ++)
        x=x+1;
        printf ("%d",x);
        cont ++;
        break;
        }
        getch ();
        return 0;
        }
}

Gracias por adelantado.Buenos dias.  :-[

willyhunting

Buff, deberías repasarte cuando hay que utilizar las llaves, además de que hay un 'case 1:' que no sé muy bien qué pinta.

También te aconsejo que vayas comprobando que el programa funciona correctamente conforme lo vas haciendo, en vez de esperarte al final. De este modo podrás localizar mejor los fallos.

Lx

#2
Te lo corregí sólo para que veas la diferencia entre un código ordenado y uno como el tuyo ...


# include <stdio.h>

int main ()
{
  int x, cont=0;
  char  opcion;    
 
  printf("Introduzca el numero deseado: ");
  scanf("%d", &x);
  while( getchar()!='\n');
 
  do{
     printf("\n\nIntroduzca la operacion deseada: \n\n");
     printf(" a. Pares \n");
     printf(" b. Impares \n");
     printf(" c. Todos \n\n");
     printf("Elige opcion: ");
     scanf("%c", &opcion);
     while( getchar()!='\n');
     
     switch( opcion){
       
        case 'a':
           
           if( x%2 != 0){
              x = x + 1;
           }
           printf ("\n%d",x);
           for ( cont = 1; cont < 10; cont ++){
             
              x = x + 2;
              printf(" %d",x);
           }
           break;
           
        case 'b':
           
           if( x%2 == 0){
              x = x + 1;
           }
           printf ("\n%d",x);
           for ( cont = 1; cont < 10; cont ++){
             
              x = x + 2;
              printf (" %d",x);
           }
           break;
           
        case 'c':
           
           printf ("\n");
           for ( cont = 0; cont < 10; cont ++){
             
              x = x + 1;
              printf ("%d ",x);
           }
           break;
           
        default:
           
           printf("\nError - opcion no valida. Seleccione a. b. o c.");
     }
  }while( opcion == 'a' || opcion == 'b' || opcion == 'c');
 
  printf("\n\nPresione ENTER para salir . . .");
  getchar();
  return 0;
}


Y de paso ves tus errores ...

Cuando pones un if(...) no es necesario poner else, si es que no lo vas a usar ...

Cuando el if, else, switch, while, for, etc. llevan más de 1 sentencia se le debe poner llaves.

Nos vemos.

eltyh

Gracias a ambos, la verdad es que estaba un poco atascada y como no me salia me ofusque. Ya cuando me dijeron los errores me di cuenta, ya estos errores a mirarlos con lupa a partir de ahora :P