Newsgroup: it.comp.lang.vo-clipper
Titolo: Anno bisestile

Innanzitutto auguri a tutti, poi vorrei farvi una richiesta: non riesco a
calcolare l'anno bisestile, qualcuno mi può suggerire l'algoritmo giusto ?
Grazie: Max G

 ha scritto nel messaggio
news:av0tui$fts$1...@fata.cs.interbusiness.it...


 calcolare l'anno bisestile, qualcuno mi può suggerire l'algoritmo giusto ?
Io, in Clipper, uso questa funzione:
FUNCTION ISLEAP( xYear )
    IF VALTYPE( xYear ) = "D"; xYear = YEAR( xYear ); ENDIF
    RETURN ( xYear % 4 = 0 .AND. xYear % 100 != 0 ) .OR. xYear % 400 = 0
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

 ha scritto nel
messaggio news:3E144B94...@emagsoftware.it...

Forse si dovrebbe aggiungere .or. xYear % 1000 = 0 altrimenti gli anni 1000
o 3000 non risultano bisestili mentre gli anni 1004 o 3004 sono bisestili.
Ciao

 o 3000 non risultano bisestili mentre gli anni 1004 o 3004 sono bisestili.
Sei sicuro che il 3000 sia da considerare bisestile? Io ho fatto una
brevissima ricerca su Internet e mi sembra che non sia cosě. L'algoritmo
riportato č sempre quello da me utilizzato. Comunque, se tu ne sai di
piů fammelo sapere.


 piů fammelo sapere.
Anche secondo me  il 3000 non č bisestile. Anche io uso la tua stessa
formula.
Anzi mi sembra di ricordare che la formula funziona filo al 4000 ( secolo
piu' secolo meno) dopo di che occorre aggiungere qualcosa per correggere il
tutto.
Ciao,
      Fabrizio Malaguti



Come disse qualcuno molto tempo fa "La matematica non à un'opinione".
Prima di rispondere, fate almeno qualche considerazione e cioè:
1) Una funzione che calcola l'anno bisestile deve comunque essere a prova
d'errore;
2) Prima di rispondere ad un messaggio, leggetelo bene;
3) L'anno bisestile, mi hanno insegnato da piccolo, cade ogni 4 anni.
Scherzi a parte, se l'anno 996 à bisestile (IsLeap(996)= true) e l'anno 1004
à bisestile (IsLeap(1004)=true allora l'anno 1000 DEVE essere bisestile ed
ancora:
Se l'anno 2996 à bisestile (IsLeap(2996)= true) e l'anno 3004 à bisestile
(IsLeap(3004)=true allora l'anno 3000 DEVE essere bisestile.
Queste sono le mie considerazioni. Guarda caso questo succede solo con i
millenni dispari (1000, 3000, 5000 ecc..)
Aggiungendo alla funzione .or. xYear%1000=0, anche questi anni risultano
bisestili.
Ciao a tutti.

 (IsLeap(3004)=true allora l'anno 3000 DEVE essere bisestile.
Mi dispiace ma se la convenzione adottata dice diversamente non c'č
opinione che tenga.


 opinione che tenga.
Ciao Enrico, hai ragione, la mia è un'opinione matematica personale che non
ha tenuto conto delle convenzioni del recupero dei giorni decimali nel
calcolo degli anni bisestili.
La tua formula è esatta.


 La tua formula è esatta.
Ok. Hai comunque fatto bene ad esporre i tuoi dubbi al riguardo.



il calcolo dell'anno bisestile puo' essere fatto correttamente solo a
partire dall'anno 1582 quando il papa Gregorio XIII (al secolo Ugo
Boncompagni) il 13 febbraio 1582( che giorno della settimana era????
attenzione a rispondere subito: furono aggiunti dieci giorni a quelli appena
trascorsi x compensare l' errore che si era accumulato per via della scarsa
precisione dei calcoli precedenti) con la bolla "Inter Gravissimas" (gia' da
allora la mia squadra del cuore faceva fibrillare gli animi ;-))) )
promulgo' la riforma del calendario, per questo motivo disquisizioni
sull'anno mille o sui precedenti sono solo lana caprina, non portano a nulla
se non si tiene conto dei cambiamenti che questa riforma ha portato,
inoltre, non in tutte le parti del mondo il calendario gregoriano fu
adottato contemporaneamente per es. in Giappone nel 1873 ed in Russia nel
1917.
si noti che gia' Giulio Cesare nell'anno 708 di Roma (aumentano le
confusioni...) aveva stabilito che l'anno doveva essere di 365 giorni x tre
anni, il quarto di 365, ogni quattro anni, infatti, tra il 23 ed il 24
febbraio si poneva un giorno detto "bis sexto Kalendas Martias" da qui
"bisestile".
il calcolo corretto e' quello proposto da EMG: un anno è bisestile se e'
divisibile per 400 oppure divisibile x 4 e non x 100.
questo metodo  vale sino al 4009 quando si sara' accumulato un giorno di
ritardo rispetto a quello solare lo scarto tra l'anno solare e quello
gregoriano e' infatti di 25,96768 secondi.
spero di non avervi tediato con un po di storia
Francosignore