Newsgroup: it.comp.lang.delphi
Titolo: Pasqua

Carissimi,
Avrei bisogno di sapere come si fa a calcolare il giorno di Pasqua.
Esiste qualche funzione già disponibile ?
Grazie tante a chi risponderà.
Raffaele.

 ha scritto nel messaggio
news:TD8I7.82759$sq5.3...@news.infostrada.it...



Beh mi sa che chiedi un pò troppo. Però potresti scrivertela tu...
es:
function CalcolateEasterDay(): TDateTime
var
  Pasqua: TDateTime;
begin
   {
	tieni conto dell'anno bisestile, e di quando
	di solito è pasqua ^_^
   }
	Result := Pasqua;
end;
--
Lawrence "Rhymes" Oluyede
rhy...@myself.com
http://www.foxhound-games.it

 di solito č pasqua ^_^
Ah, si? E quando č "di solito" Pasqua?
--
__________________________________
http://digilander.iol.it/snarchio
 
snar...@tin.it

Ah, si? E quando è "di solito" Pasqua?
E che cacchio ne so ^_^ 


> E che cacchio ne so ^_^
... e pensare che credevo di non saperlo solo io!
Comunque qualche dritta ci sarą pure... sono fiducioso.... rispondete,
Grazie.
Raffaele

Ho trovato!!!!
la funzione è presente nelle JEDI Code Library nel file JclDateTime.pas
all'indirizzo 
http://www.delphi-jedi.org/
 e si chiama "EasterSunday"
Grazie a tutti comunque.
Raffaele

E che cacchio ne so ^_^ 
La domenica seguente la prima settimana con luna piena dopo la
quaresima.
Vi voglio vedere a implementare quest'algoritmo :-))))
-- 
(*metallikop*libero*it*)
{
http://web.tiscali.it/mbsoftware
}

Esiste qualche funzione già disponibile ?
Esiste il famoso algoritmo di Gauss.
In ogni caso, il metodo e' spiegato a pp. 155-156 di "The
Art of Computer Programming" 1^ volume.
Il codice seguente (che e' la mia traduzione dal sorgente
C), mostra la data di Pasqua.  E' un'applicazione console.
Per quest'anno, ha visualizzato (correttamente), il 15
Aprile.
<CODE>
program Pasqua;
{$APPTYPE CONSOLE}
uses
  SysUtils;
const CENTURY = 100;
      LEAP = 4;
      WEEK = 7;
      MARCH_DAYS = 31;
      APRIL = 3;
      METONIC = 19;
      BASEYEAR = 1900;
      GREGORY = 1582;
function QuestAnno: Integer;
var
  Y, M, D: Word;
begin
  DecodeDate(Date, Y, M, D);
  Result := M + BASEYEAR;
  if M > APRIL then
    Result := Result + 1;
end;
procedure Pasqua(Anno: Word);
var iepact,
    ifullmoon,
    igolden,
    icentury,
    inoleap: Integer;
begin
  if (Anno >= GREGORY) then
  begin
    igolden := Anno mod METONIC + 1;
    icentury := Anno div CENTURY + 1;
    inoleap := 3 * icentury div LEAP - 12;
    iepact := (11 * igolden + 20 +
                (8 * icentury + 5) div 25 - 5 -
                inoleap) mod 30;
    if (iepact < 0) then
      iepact := iepact + 30;
    if (((iepact = 25) and (igolden > 11)) or (iepact = 24))
then
      iepact := iepact + 1;
    ifullmoon := 44 - iepact;
    if (ifullmoon < 21) then
      ifullmoon := ifullmoon + 30;
    ifullmoon := ifullmoon + WEEK -
                 (Round((5.0 * Anno) / LEAP) - inoleap - 10
                 + ifullmoon) mod WEEK;
    if (ifullmoon > MARCH_DAYS) then
      WriteLn(Format('%d Aprile %d', [ifullmoon -
MARCH_DAYS, Anno]))
    else
      WriteLn(Format('%d Marzo %d', [ifullmoon, Anno]))
  end
  else
    WriteLn(Anno, ': prima della riforma gregoriana !');
end;
begin
  Pasqua(2001);
  ReadLn;
end.
</CODE>
-- 
The Follet

Vi voglio vedere a implementare quest'algoritmo :-))))
Questo algoritmo esiste gia'.
-- 
The Follet

procedure Pasqua(Anno: Word);
<...>
La procedura va rinominata in "CalcolaPasqua".
-- 
The Follet

 E che cacchio ne so ^_^
Come? Quando mangi l'uovo di cioccolato!!! Che domande!!! ;PP
Ciiiaaaoooo.
--
Davide DG.
  - In medio stat virtus -