Test Foro de elhacker.net SMF 2.1

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í,
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>

int main(){
  int mes[11];
  int i;
  int b;
  for(i=0;i<12;i++){
     printf("Introduzca el nivel de lluvias del mes de [%d]\n",i);
     scanf("%d", &mes[i]);
  }

  printf("\nDeseas el promedio de lluvias bimestral o trimestral?\n");
  printf("\n1)Bimestral\n\n2)Trimestral\n\nopcion\n");
  scanf("%i",&b);

  switch (b){
     case 1:
        printf("enero-febrero %d\n",(mes[0]+mes[1])/2);
        printf("marzo-abril %d\n",(mes[2]+mes[3])/2);
        printf("mayo-junio %d\n",(mes[4]+mes[5])/2);
        printf("julio-agosto %d\n",(mes[6]+mes[7])/2);
        printf("septiembre-octubre %d\n",(mes[8]+mes[9])/2);
        printf("noviembre-diciembre %d\n",(mes[10]+mes[11])/2);
        break;
     case 2:
        printf("ene-feb-mar %d\n",(mes[0]+mes[1]+mes[2])/3);
        printf("abr-may-jun %d\n",(mes[3]+mes[4]+mes[5])/3);
        printf("jul-ago-sep %d\n",(mes[6]+mes[7]+mes[8])/3);
        printf("oct-nov-dic %d\n",(mes[9]+mes[10]+mes[11])/3);
        break;
     default :
        printf("Opción incorrecta\n");
  }
  getch();            
  return 0;
}
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,
char b;
por,
int b;

2,
scanf("%c",&b);
por,
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!