Clipper On Line • Ver Tópico - Cálculo domingo de páscoa

Cálculo domingo de páscoa

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Cálculo domingo de páscoa

Mensagempor JoséQuintas » 22 Abr 2021 15:46

Estava olhando aqui pra tentar "clarear" o cálculo do domingo de páscoa.

FUNCTION DomingoDePascoa( nAno )

   LOCAL nA, nB, nC, nD, nE, nF, nG, nH, nI, nK, nL, nM, nMes, nDia

   nA   := nAno % 19
   nB   := Int( nAno / 100 )
   nC   := nAno % 100
   nD   := Int( nB / 4 )
   nE   := nB % 4
   nF   := Int( ( nB + 8 ) / 25 )
   nG   := Int( ( nB - nF + 1 ) / 3 )
   nH   := ( 19 * nA + nB - nD - nG + 15 ) % 30
   nI   := Int( nC / 4 )
   nK   := nC % 4
   nL   := ( 32 + 2 * nE + 2 * nI - nH - nK ) % 7
   nM   := Int( ( nA + 11 * nH + 22 * nL ) / 451 )
   nMes := Int( ( nH + nL - 7 * nM + 114 ) / 31 )
   nDia := ( ( nH + nL - 7 * nM + 114 ) % 31 ) + 1

   RETURN Stod( StrZero( nAno, 4 ) + StrZero( nMes, 2 ) + StrZero( nDia, 2 ) )


À primeira vista, uma parte é pra simplificar o cálculo, talvez pra usar números menores e/ou fazer a mão.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Cálculo domingo de páscoa

Mensagempor JoséQuintas » 22 Abr 2021 15:49

Primeira mudança: o nome da variável pra calcular "quantos 100 anos".

FUNCTION DomingoDePascoa( nAno )

   LOCAL nA, nCemAnos, nC, nD, nE, nF, nG, nH, nI, nK, nL, nM, nMes, nDia

   nA   := nAno % 19
   nCemAnos   := Int( nAno / 100 )
   nC   := nAno % 100
   nD   := Int( nCemAnos / 4 )
   nE   := nCemAnos % 4
   nF   := Int( ( nCemAnos + 8 ) / 25 )
   nG   := Int( ( nCemAnos - nF + 1 ) / 3 )
   nH   := ( 19 * nA + nCemAnos - nD - nG + 15 ) % 30
   nI   := Int( nC / 4 )
   nK   := nC % 4
   nL   := ( 32 + 2 * nE + 2 * nI - nH - nK ) % 7
   nM   := Int( ( nA + 11 * nH + 22 * nL ) / 451 )
   nMes := Int( ( nH + nL - 7 * nM + 114 ) / 31 )
   nDia := ( ( nH + nL - 7 * nM + 114 ) % 31 ) + 1

   RETURN Stod( StrZero( nAno, 4 ) + StrZero( nMes, 2 ) + StrZero( nDia, 2 ) )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Cálculo domingo de páscoa

Mensagempor JoséQuintas » 22 Abr 2021 15:54

A segunda, o resto de dividir por cem anos.

FUNCTION DomingoDePascoa( nAno )

   LOCAL nA, nCemAnos, nRestoCemAnos, nD, nE, nF, nG, nH, nI, nK, nL, nM, nMes, nDia

   nA   := nAno % 19
   nCemAnos   := Int( nAno / 100 )
   nRestoCemAnos   := nAno % 100
   nD   := Int( nCemAnos / 4 )
   nE   := nCemAnos % 4
   nF   := Int( ( nCemAnos + 8 ) / 25 )
   nG   := Int( ( nCemAnos - nF + 1 ) / 3 )
   nH   := ( 19 * nA + nCemAnos - nD - nG + 15 ) % 30
   nI   := Int( nRestoCemAnos / 4 )
   nK   := nRestoCemAnos % 4
   nL   := ( 32 + 2 * nE + 2 * nI - nH - nK ) % 7
   nM   := Int( ( nA + 11 * nH + 22 * nL ) / 451 )
   nMes := Int( ( nH + nL - 7 * nM + 114 ) / 31 )
   nDia := ( ( nH + nL - 7 * nM + 114 ) % 31 ) + 1

   RETURN Stod( StrZero( nAno, 4 ) + StrZero( nMes, 2 ) + StrZero( nDia, 2 ) )


Por enquanto parei por aí.
À primeira vista tem o cálculo de anos bisextos nos 100 anos, e também fora deles, ao dividir por 4.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Cálculo domingo de páscoa

Mensagempor JoséQuintas » 22 Abr 2021 16:02

Parece algo do tipo:

Qual o dia da semana que caiu dia primeiro de abril?
Hoje é dia 22.

A cada 7 dias o dia de semana é a mesmo.
22 - 7 = 15 semana anterior, 15 - 7 = 8 semana anterior, 8 - 7 = 1 semana anterior, chegamos no dia primeiro, então dia primeiro é igual a hoje, quinta-feira.

Parece que a fórmula usa algo do tipo, pra simplificar cálculos (se é que simplifica).
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Cálculo domingo de páscoa

Mensagempor JoséQuintas » 22 Abr 2021 16:25

   nD   := Int( nCemAnos / 4 )
   nE   := nCemAnos % 4


Pensei nessa parte como sendo pra calcular anos bissextos, mas não parece ser, porque não seria encima de grupo de 100 anos.
Ou esta

   nI   := Int( nRestoCemAnos / 4 )
   nK   := nRestoCemAnos % 4


A não ser que exista uma coincidência de dia de semana a cada 100 anos, ou algo do tipo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Cálculo domingo de páscoa

Mensagempor JoséQuintas » 22 Abr 2021 16:27

Melhor deixar nisso mesmo... senão vai deixar doido.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Cálculo domingo de páscoa

Mensagempor JoséQuintas » 22 Abr 2021 16:29

É que estou olhando sobre as funções que poderia criar no MySQL.
E tentando entender algumas, até as que não dá pra entender kkkkk
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 19 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro