Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: sora_ori en 16 Abril 2013, 11:29 am



Título: Estación del año en C
Publicado por: sora_ori en 16 Abril 2013, 11:29 am
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.



Código
  1.    /* HEMISFERIO */
  2.    printf("\n\nEn que hemisferio estas (1. norte / 2. sur): ");
  3.    scanf("%d", hemis);
  4.  
  5.  
  6.    /* ESTACION DEL AÑO */
  7.  
  8.    if (hemis == 1){
  9.  
  10.                if(mes==1 | mes==2 | (mes==3 & dia<22) | (mes==12 & dia>22)){
  11.                        printf ("Es invierno en el hemisferio Norte");
  12.                }
  13.                else if (mes==5 | mes==4 | (mes==6 & dia<22) | (mes==3 & dia>22)){
  14.                        printf ("Es primavera en el hemisferio Norte");
  15.                }
  16.                else if (mes==7 | mes==8 | (mes==9 & dia<22) | (mes==6 & dia>22)){
  17.                        printf ("Es verano en el hemisferio Norte");
  18.                }
  19.  
  20.                else{
  21.                     printf ("Es otoño en el hemisferio Norte");
  22.                }
  23.  
  24.        }
  25.  
  26.    else{
  27.  
  28.                if(mes==1 | mes==2 | (mes==3 & dia<22) | (mes==12 & dia>22)){
  29.                        printf ("Es verano en el hemisferio Sur");
  30.                }
  31.                else if (mes==5 | mes==4 | (mes==6 & dia<22) | (mes==3 & dia>22)){
  32.                        printf ("s otoño en el hemisferio Sur");
  33.                }
  34.                else if (mes==7 | mes==8 | (mes==9 & dia<22) | (mes==6 & dia>22)){
  35.                        printf ("Es invierno en el hemisferio Sur");
  36.                }
  37.                else{
  38.                        printf ("Es primavera en el hemisferio Sur");
  39.                }
  40.        }


Título: Re: Estación del año en C
Publicado por: Daniel_Ruiz en 16 Abril 2013, 13:58 pm
Soy nuevo pero mmm usa switch con case's Espero haberte ayudado :/


Título: Re: Estación del año en C
Publicado por: rir3760 en 16 Abril 2013, 14:26 pm
El 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:
Código
  1. 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


Título: Re: Estación del año en C
Publicado por: sora_ori en 16 Abril 2013, 16:40 pm
Gracias jajaja

Vaya error más tonto  ;D




Un saludo