Algorítimo - Dia da semana
Publicado por Ezequias Rocha (última atualização em 14/07/2011)
[ Hits: 10.257 ]
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));
}
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Instalando COSMIC no Linux Mint
Turbinando o Linux Mint: o poder das Nemo Actions
Inteligência Artificial no desenvolvimento de software: quando começar a usar?
O widget do Plasma 6 Área de Notificação
[Resolvido] Algo deu errado ao abrir seu perfil
Quando vocês pararam de testar distros? (14)
Problema com som no laptop (3)
Não estou conseguindo fazer funcionar meu Postfix na versão 2.4 no Deb... (2)









