Ver Mensaje Individual
  #8 (permalink)  
Antiguo 12/10/2014, 11:59
Avatar de leosansan
leosansan
 
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 11 años, 10 meses
Puntos: 49
Respuesta: Introducir mes y mostrar numero dias en C

Cita:
Iniciado por HackID1 Ver Mensaje
Lo del Return(1) o (0) no lo entendí muy bien cuando empece con esto :( .

Y la respuesta la he intentado asimilar así pero sigue mostrando el error en el número de días del mes.

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.    
  5.     char *meses[] = {"enero", "febrero", "marzo", "abril", "mayo", "junio",
  6.                        "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"};
  7.     char mes[12];
  8.     int dias_meses[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
  9.     int i ;
  10.    
  11.     printf("Introduzca el nombre del mes: ");
  12.     scanf("%s", mes);
  13.    
  14.     for (i=0; i<12; i++) {
  15.    
  16.         if ( strcmp ( mes, meses ) == 0 )
  17.             break;  
  18.     }
  19.  /******* ESTO ES FUNDAMENTAL **/
  20.     if ( i == 12 )
  21.         puts ( "Mes incorrecto" ) ;
  22.     else
  23.         printf("Mes %s tiene %d dias.", mes, dias_meses[i] );
  24.     return (0);
  25. }

No entiendo para que la comparación if( i == 12) por eso la he quitado, si me puedes explicar un poco.
...............................
La comparación es fundamental. Si sólo pones el printf, como tenías, si el mes es incorrecto al llegar al printf imprimirá "basura" ya que te habrás "salido" del array ya que este sólo llega hasta once y el valor es indicativo de que recorrió todo el array y no hubo coincidencia alguna.

Y aprovecho para darle otro fuerte abrazo al amigo Daniel, parece que nos unimos todos en este foro.

Y respecto a lo que propones para años bisiestos o no yo sería partidario de usar un solo array y al averiguar si es o no bisiesto definir el valor dias_meses[1].

Algo como:

Código C++:
Ver original
  1. if ( anyo == bisiesto )
  2.   dias_meses[1] = 29
  3. else
  4.   dias_meses[1] = 28

¡¡¡Saluditos!!!


Última edición por leosansan; 12/10/2014 a las 12:08