Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/10/2014, 17:09
eduar2083
 
Fecha de Ingreso: octubre-2014
Ubicación: Lima
Mensajes: 74
Antigüedad: 9 años, 6 meses
Puntos: 1
Respuesta: Introducir mes y mostrar numero dias en C

Hola,
Yo optaría por crear 2 funciones:
- Una que encapsule un array de cadenas con los nombres de los meses válidos y que devuelva la posición en que se encuentra el nombre del mes que le envío por parámetro.
- Otra función que encapsule los días correspondientes a cada mes y que devuelva la posición correspondiente al mes que le envío por parámetro (la posición del mes correspondiente la obtengo de la función anterior).

Algo como esto:
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define NMESES 12
  6.  
  7. int esMesValido(const char* nombre)
  8. {
  9.     char sMeses[][10] = { "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Setiembre", "Octubre", "Noviembre", "Diciembre" };
  10.  
  11.     int i;
  12.  
  13.     for (i = 0; i < NMESES && !strcmp(nombre, sMeses[i]) == 0; ++i);
  14.  
  15.     return i;
  16. }
  17.  
  18. int getDiasMes(const int index)
  19. {
  20.     int iMeses[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  21.  
  22.     return iMeses[index];
  23. }
  24.  
  25. int main()
  26. {
  27.     char entrada[80];
  28.     int index;
  29.  
  30.     do
  31.     {
  32.         printf("Introduzca el nombre del mes: ");
  33.         fflush(stdout);
  34.         gets(entrada);
  35.  
  36.         index = esMesValido(entrada);
  37.         if (index == NMESES) puts("\tMes incorrecto");
  38.     }
  39.     while (index == NMESES);
  40.  
  41.     printf("\n%s tiene %d dias\n", entrada, getDiasMes(index));
  42.  
  43.     return EXIT_SUCCESS;
  44. }
Cabe mencionar que se considera que Febrero siempre tendrá 28 días, ya que según tu enunciado no intervienen años bisiestos.

Saludos.