Lo de el día de la semana es más complicado, si lo quieres hacer tú directamente...
El número de días es fácil. Supongo que en este foro habrá que ponerlo en \'pseudo-código\':
tipo enumerado Meses {enero, febrero, marzo, ... , diciembre}
var
numeroDias: array de [Meses] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
entero numeroDias(Mes mes, entero anyo) {
SI mes<>febrero ENTONCES
devuelve numeroDias[mes];
SINO SI esBisiesto(anyo) ENTONCES
devuelve 29
SINO
devuelve 28
}
Para saber en qué día empieza cada mes, la idea es tener una tabla con el día de la semana en que empieza cada año, y luego saber el \"incremento\" en el día, según el mes.
Por ejemplo, se cumple que en un año no bisiesto que empieza en lunes, el mes de abril empieza en domingo (un incremento de +6 días), y así con cada mes, teniendo en cuenta, a partir de febrero, si el año es bisiesto o no.
Por otro lado, si coges un calendario perpetuo, puedes sacar regularidades en el día de la semana en que empiezan los años, así que es posible que no haga falta guardar una tabla completa, con una entrada por año.
Espero que no sea demasiado tarde...
Si no tienes que hacer tú el calendario, lo mejor es que uses alguna de las funciones que dan los lenguajes de programación.