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#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NMESES 12
int esMesValido(const char* nombre)
{
char sMeses[][10] = { "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Setiembre", "Octubre", "Noviembre", "Diciembre" };
int i;
for (i
= 0; i
< NMESES
&& !strcmp(nombre
, sMeses
[i
]) == 0; ++i
);
return i;
}
int getDiasMes(const int index)
{
int iMeses[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
return iMeses[index];
}
int main()
{
char entrada[80];
int index;
do
{
printf("Introduzca el nombre del mes: ");
index = esMesValido(entrada);
if (index
== NMESES
) puts("\tMes incorrecto"); }
while (index == NMESES);
printf("\n%s tiene %d dias\n", entrada
, getDiasMes
(index
));
return EXIT_SUCCESS;
}
Cabe mencionar que se considera que Febrero siempre tendrá 28 días, ya que según tu enunciado no intervienen años bisiestos.
Saludos.