Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: aneozz en 11 Octubre 2010, 06:11 am



Título: me ignora el switch
Publicado por: aneozz en 11 Octubre 2010, 06:11 am
hola soy nuevo aqui y me urge ayuda

tengo un problema compilo el siguiente programa y al ejecutarlo simplemente se salta el switch, agradeceria mucho que me mostraran mi error

-----------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>


int main()
{
    int mes[11];
    int i;
    char b;
    for(i=0;i<12;i++)
    {
                      printf("Introduzca el nivel de lluvias del mes de [%d]",i);
                      scanf("%d",&mes);
    }
    printf("\nDeseas el promedio de lluvias bimestral o trimestral?\n");
    printf("\n1)Bimestral\n\n2)Trimestral\n\nopcion\n");
    scanf("%c",&b);
   
    switch (b)
    {
    case 1 :
                printf("\nenero-febrero %d",(mes[0]+mes[1])/2);
                printf("\nmarzo-abril %d",(mes[2]+mes[3])/2);
                printf("\nmayo-junio %d",(mes[4]+mes[5])/2);
                printf("\njulio-agosto %d",(mes[6]+mes[7])/2);
                printf("\nseptiembre-octubre %d",(mes[8]+mes[9])/2);
                printf("\nnoviembre-diciembre %d\n",(mes[10]+mes[11])/2);
                break;
    case 2 :
                printf("\nene-feb-mar %d",(mes[0]+mes[1]+mes[2])/3);
                printf("\nabr-may-jun %d",(mes[3]+mes[4]+mes[5])/3);
                printf("\njul-ago-sep %d",(mes[6]+mes[7]+mes[8])/3);
                printf("\noct-nov-dic %d",(mes[9]+mes[10]+mes[11])/3);
                break;
               
    default :("\nopcion incorrecta");
    }
    getch();           
    return 0;
}

--------------------------------------------------------

muchas gracias de antemano, y es un gusto estar con ustedes


Título: Re: me ignora el switch
Publicado por: Shell Root en 11 Octubre 2010, 06:28 am
Es porque el variable b es de tipo char y estas comparando números. Intentad así,
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <math.h>
  5.  
  6. int main(){
  7.   int mes[11];
  8.   int i;
  9.   int b;
  10.   for(i=0;i<12;i++){
  11.      printf("Introduzca el nivel de lluvias del mes de [%d]\n",i);
  12.      scanf("%d", &mes[i]);
  13.   }
  14.  
  15.   printf("\nDeseas el promedio de lluvias bimestral o trimestral?\n");
  16.   printf("\n1)Bimestral\n\n2)Trimestral\n\nopcion\n");
  17.   scanf("%i",&b);
  18.  
  19.   switch (b){
  20.      case 1:
  21.         printf("enero-febrero %d\n",(mes[0]+mes[1])/2);
  22.         printf("marzo-abril %d\n",(mes[2]+mes[3])/2);
  23.         printf("mayo-junio %d\n",(mes[4]+mes[5])/2);
  24.         printf("julio-agosto %d\n",(mes[6]+mes[7])/2);
  25.         printf("septiembre-octubre %d\n",(mes[8]+mes[9])/2);
  26.         printf("noviembre-diciembre %d\n",(mes[10]+mes[11])/2);
  27.         break;
  28.      case 2:
  29.         printf("ene-feb-mar %d\n",(mes[0]+mes[1]+mes[2])/3);
  30.         printf("abr-may-jun %d\n",(mes[3]+mes[4]+mes[5])/3);
  31.         printf("jul-ago-sep %d\n",(mes[6]+mes[7]+mes[8])/3);
  32.         printf("oct-nov-dic %d\n",(mes[9]+mes[10]+mes[11])/3);
  33.         break;
  34.      default :
  35.         printf("Opción incorrecta\n");
  36.   }
  37.   getch();            
  38.   return 0;
  39. }


Título: Re: me ignora el switch
Publicado por: aneozz en 11 Octubre 2010, 06:35 am
sigue funcionar

despues de ingresar el valor de b simplemente se cierra


Título: Re: me ignora el switch
Publicado por: aneozz en 11 Octubre 2010, 06:43 am
gracias shell

ese era el problema tenias razon

mil gracias ;D
me acabas de salvar


Título: Re: me ignora el switch
Publicado por: Shell Root en 11 Octubre 2010, 06:43 am
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.

Pues si ves el código solo le modifique 2 cosas,
1,
Código
  1. char b;
por,
Código
  1. int b;

2,
Código
  1. scanf("%c",&b);
por,
Código
  1. scanf("%i",&b);


Título: Re: me ignora el switch
Publicado por: do-while en 11 Octubre 2010, 23:51 pm
¡Buenas!

No tenias que haber modificado ningun tipo de varoable. Tenias que haberte dado cuenta de que el numero 1 es distinto del caracter 1. Ahora en el switch, lo unico que tienes que cambiar es numeros por caracteres.

¡Saludos!