Estación del año en C

Iniciado por sora_ori, 16 Abril 2013, 11:29 AM

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

sora_ori

Buenas,


Estoy haciendo un programa en C que pide el dia el mes y el hemisferio y te dice en que estación del año se encuentra.

El problema me surge en los If, Else de las estaciones que me da error cuando el usuario escribe el hemisferio.



    /* HEMISFERIO */
    printf("\n\nEn que hemisferio estas (1. norte / 2. sur): ");
    scanf("%d", hemis);
   
   
    /* ESTACION DEL AÑO */
   
    if (hemis == 1){
             
                if(mes==1 | mes==2 | (mes==3 & dia<22) | (mes==12 & dia>22)){
                        printf ("Es invierno en el hemisferio Norte");
                }
                else if (mes==5 | mes==4 | (mes==6 & dia<22) | (mes==3 & dia>22)){
                        printf ("Es primavera en el hemisferio Norte");
                }
                else if (mes==7 | mes==8 | (mes==9 & dia<22) | (mes==6 & dia>22)){
                        printf ("Es verano en el hemisferio Norte");
                }
           
                else{
                     printf ("Es otoño en el hemisferio Norte");
                }
             
        }
       
    else{
   
                if(mes==1 | mes==2 | (mes==3 & dia<22) | (mes==12 & dia>22)){
                        printf ("Es verano en el hemisferio Sur");
                }
                else if (mes==5 | mes==4 | (mes==6 & dia<22) | (mes==3 & dia>22)){
                        printf ("s otoño en el hemisferio Sur");
                }
                else if (mes==7 | mes==8 | (mes==9 & dia<22) | (mes==6 & dia>22)){
                        printf ("Es invierno en el hemisferio Sur");
                }
                else{
                        printf ("Es primavera en el hemisferio Sur");
                }
        }


Daniel_Ruiz

Soy nuevo pero mmm usa switch con case's Espero haberte ayudado :/
Importante


Bueno Necesito de su ayuda estoy montando una microempresa, Y estoy reuniendo Quemadoras de Dvd - Cd , Soy de Colombia Bogota si quieres apoyarme enviame un Mp Por Favor!.

rir3760

Cita de: sora_ori en 16 Abril 2013, 11:29 AMEl problema me surge en los If, Else de las estaciones que me da error cuando el usuario escribe el hemisferio.
En la llamada a scanf:
scanf("%d", hemis);
Te falta el operador "dirección de" (el '&').

Y deberías utilizar los operadores lógicos "&&" y "||" en lugar de los operadores a nivel de bits "&" y "|" ya que los primeros son mas eficientes y garantizan un orden de evaluación.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

sora_ori

Gracias jajaja

Vaya error más tonto  ;D




Un saludo