Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: eltyh en 18 Mayo 2011, 07:25 am



Título: Ayuda con switch(urgente)
Publicado por: eltyh en 18 Mayo 2011, 07:25 am
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.  :-[


Título: Re: Ayuda con switch(urgente)
Publicado por: willyhunting en 18 Mayo 2011, 08:28 am
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.


Título: Re: Ayuda con switch(urgente)
Publicado por: Lx en 19 Mayo 2011, 05:23 am
Te lo corregí sólo para que veas la diferencia entre un código ordenado y uno como el tuyo ...

Código
  1. # include <stdio.h>
  2.  
  3. int main ()
  4. {
  5.   int x, cont=0;
  6.   char  opcion;    
  7.  
  8.   printf("Introduzca el numero deseado: ");
  9.   scanf("%d", &x);
  10.   while( getchar()!='\n');
  11.  
  12.   do{
  13.      printf("\n\nIntroduzca la operacion deseada: \n\n");
  14.      printf(" a. Pares \n");
  15.      printf(" b. Impares \n");
  16.      printf(" c. Todos \n\n");
  17.      printf("Elige opcion: ");
  18.      scanf("%c", &opcion);
  19.      while( getchar()!='\n');
  20.  
  21.      switch( opcion){
  22.  
  23.         case 'a':
  24.  
  25.            if( x%2 != 0){
  26.               x = x + 1;
  27.            }
  28.            printf ("\n%d",x);
  29.            for ( cont = 1; cont < 10; cont ++){
  30.  
  31.               x = x + 2;
  32.               printf(" %d",x);
  33.            }
  34.            break;
  35.  
  36.         case 'b':
  37.  
  38.            if( x%2 == 0){
  39.               x = x + 1;
  40.            }
  41.            printf ("\n%d",x);
  42.            for ( cont = 1; cont < 10; cont ++){
  43.  
  44.               x = x + 2;
  45.               printf (" %d",x);
  46.            }
  47.            break;
  48.  
  49.         case 'c':
  50.  
  51.            printf ("\n");
  52.            for ( cont = 0; cont < 10; cont ++){
  53.  
  54.               x = x + 1;
  55.               printf ("%d ",x);
  56.            }
  57.            break;
  58.  
  59.         default:
  60.  
  61.            printf("\nError - opcion no valida. Seleccione a. b. o c.");
  62.      }
  63.   }while( opcion == 'a' || opcion == 'b' || opcion == 'c');
  64.  
  65.   printf("\n\nPresione ENTER para salir . . .");
  66.   getchar();
  67.   return 0;
  68. }

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.


Título: Re: Ayuda con switch(urgente)
Publicado por: eltyh en 5 Junio 2011, 00:17 am
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