Algorítimo - Dia da semana
Publicado por Ezequias Rocha (última atualização em 14/07/2011)
[ Hits: 10.196 ]
Download Dia_Da_Semana.c (versão 2)
Este algorítimo foi implementado em uma aplicação que, configurado uma dada data, seria necessário mostrar ao usuário o dia da semana. Trata-se de uma aplicação bastante conhecida e, particularmente, este algorítimo, é o mais utilizado.
Todavia, é necessário certas precauções no trato dos números, pois, no momento que o sistema trunca os decimais, erro podem surgir, principalmente nas divisões.
Mostro abaixo uma implementação que usa força bruta para evitar este erro.
Particularidades do algorítimo:
Autor: Christian Zeller (http://en.wikipedia.org/wiki/Christian_Zeller)
Calendário: Gregoriano (http://en.wikipedia.org/wiki/Gregorian_calendar)
Dias da semana: 0 = sábado, 1 = segunda-feira, 2 = terça-feira ...
Meses: janeiro e fevereiro são considerados meses 13 e 14 do ano anterior
Embraces!
Versão 2 - Enviado por Ezequias Rocha em 22/02/2011
Changelog: Erro na linha
y = ((mes>12) ? (ano-1) : ano);
Sendo substituída por:
y = ((m>12) ? (ano-1) : ano);
unsigned char DiaSemana (unsigned char dia, unsigned char mes, unsigned int ano)
{
unsigned int q, m, ret, y;
m = (mes <3) ? (mes + 12) : mes;
y = ((mes>12) ? (ano-1) : ano);
q = (unsigned int)(dia) + (unsigned int)(((m+1)*26)/10) + y + // Calendário Gregoriano
(unsigned int)(y/4) + 6*((unsigned int)(y/100)) +(unsigned int)(y/400);
ret = (q % 7);
return ((unsigned char)(ret));
}
Método de Power para calcular o autovelor dominante de uma matriz
Pedindo uma senha ao usuário!!!
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Warcraft II Remastered no Linux? (7)
O programa assinador digital (5)









