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");
}
}
Soy nuevo pero mmm usa switch con case's Espero haberte ayudado :/
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
Gracias jajaja
Vaya error más tonto ;D
Un saludo