Algoritmo del calendario

Tengrán algún algoritmo, una ecuación o algo por el estilo, que ne dé el día de la semana de cualquier día. Ejemplo:
El 24 de Marzo de 2003 es LUNES; solo sé que me tiene que salir un numero del 1 al 7 para determinar si es Lunes, Martes, Miércoles...
Me gustaría que me ayudaran.

2 respuestas

Respuesta
1
Tienes que partir de la base de que el 1 de enero de 1900 es lunes. Tienes que tener en cuenta en que formato te pasan la fecha (por ejemplo "31121999") para poder descomponer los días meses y años. También debes tener en cuenta los años bisiestos y demás movidas. Si tienes dudas vuelve a preguntar, pero en principio no es difícil.
Respuesta
1
#include <time.h>
int DayOfWeek(int day, int month, int year) {
struct tm tm_t={0};
tm_t.tm_year = year - 1900;
tm_t.tm_mon = month - 1;
tm_t.tm_mday = day;
tm_t.tm_hour = 12;
mktime(&tm_t);
return tm_t.tm_wday;
}
A ver si te sirve, te regresa el numero del día a partir de una fecha que le des de entrada en formato día, mes, año por ejemplo, si ejecutas DayOfWeek(2, 4, 2003), que es el 2 de Abril de 2003, te regresará un tres para indicarte que es Miércoles.
El truco está en llenar la estructura con los datos del año, mes y día, (lo de la hora solo lo puse para no tener problemas con lo del horario de verano)al ejecutar la función mktime(), te llena los campos restantes de la "struct tm"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas