me ignora el switch

Iniciado por aneozz, 11 Octubre 2010, 06:11 AM

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

aneozz

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

Shell Root

#1
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;
}
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

aneozz

sigue funcionar

despues de ingresar el valor de b simplemente se cierra

aneozz

gracias shell

ese era el problema tenias razon

mil gracias ;D
me acabas de salvar

Shell Root

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);
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

do-while

¡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!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!