Page 1 sur 1
[Ex] Validation d'une année bissextile
Posté : dim. 13 avr. 2008 13:20
par ani
Code : Tout sélectionner
Func isYearBissextile($iNumber)
; Nom.............: isYearBissextile
; Description.....: Renvoie l'année encodé
; Syntaxe.........: isYearBissextile($iNumber)
; Paramètres......: $iNumber - Année supérieur ou égal à lan 1600
; Valeur.retourné.: Succés - Année séculaire / Année Bissextile.
; ==> Calendrier Grégorien.
; Auteur .......: Ani
; Création .....: 13 avril 2008
; Distribué ....: 13 avril 2008
; Modifié.......: 14 avril 2008
; Version.......: 0.0.0.1 a
; Groupe........: Autoit-fr
Local $Modulo4 = StringRight($iNumber,2)/4
Local $Modulo400 = StringLeft($iNumber,2)/4
Local $b ="", $Seculaire = "00"
If $iNumber < 1600 Then
$b &= $iNumber & " est invalide"
ConsoleWrite($b)
Exit
EndIf
If ($Seculaire = $Modulo4) Then $b &= $iNumber & " est une année séculaire" & @CRLF
If (StringIsDigit($Modulo4) And StringIsDigit($Modulo400)) = 0 Then
$b &= $iNumber & " n'est pas une annnée bissextile"
Else
$b &= $iNumber & " est une année bissextile"
EndIf
Return $b
EndFunc
Exemple d'utilisation
ConsoleWrite(isYearBissextile(@YEAR + 4))
renvoie = 2012 est une année bissextile
ConsoleWrite(isYearBissextile(2007))
renvoie = 2007 n'est pas une année bissextile
ConsoleWrite(isYearBissextile(1600))
renvoie =
1600 est une année séculaire
1600 est une année bissextile
ConsoleWrite(isYearBissextile(1900))
renvoie =
1900 est une année séculaire
1900 n'est pas une année bissextile
Re: [Ex] Validation d'une année bissextile
Posté : dim. 13 avr. 2008 16:33
par Ahbadiane
Bonjour,
il faut gérer les exceptions au calcul des annèes bissextile (ex 1900)
voir
http://fr.wikipedia.org/wiki/Ann%C3%A9e_bissextile
Re: [Ex] Validation d'une année bissextile
Posté : dim. 13 avr. 2008 16:45
par ani
pas compris .
ConsoleWrite(isYearBissextile(1900))
renvoie
1900 est une année bissextile.
ou peut etre que tu parle de la date d'apparution des années bissextile ?
Re: [Ex] Validation d'une année bissextile
Posté : dim. 13 avr. 2008 17:12
par arrkhan
sauf que 1900 n'etait pas une année bisextile ^^ merci wikipédia...
Re: [Ex] Validation d'une année bissextile
Posté : dim. 13 avr. 2008 17:22
par ani
ok, mais vu que j'ai du mal à lire,, j'ai pas lu le wikibook,,
Indiquer ceux-ci
Code : Tout sélectionner
If $iNumber < 2000 Then
$b &= $iNumber & " est invalide, veuillez indiquer une date supérieur ou égal à l'an 2000"
ConsoleWrite($b)
Exit
EndIf
..sivous pouviez m'indiquer les indices des dates grégoriennes :p
$modulo4=$inumber/4
$modulo400=$inumber/400
???
Re: [Ex] Validation d'une année bissextile
Posté : dim. 13 avr. 2008 19:05
par Voodoo
"Toute année dont l'expression numérale est divisible par 4 est bissextile. Toutefois, les années séculaires ne sont pas bissextile, sauf celles dont les 2 premiers chiffres forment un nombre divisible par 4 !" - Larousse
Par exemple 1600 est bissextile. Car 1600/4 = 400 et 16/4 = 4 mais pour l'année 1900, 1900 /4 = 475 par contre 19/4 = 4,75 donc séculaire mais pas bissextile.
Une année séculaire se termine par 00 (1100,1200,...)
bonne chance

Re: [Ex] Validation d'une année bissextile
Posté : lun. 14 avr. 2008 14:03
par ani
UP!!UP
C'est bon comme çà ?
merci pour les info

Re: [Ex] Validation d'une année bissextile
Posté : lun. 14 avr. 2008 14:11
par Voodoo
je ne peux pas tester immédiatement mais à vu
Code : Tout sélectionner
If $iNumber < 1600 Then
$b &= $iNumber & " est invalide"
ConsoleWrite($b)
Exit
EndIf
Pourquoi ? et si je veux tester 1500 je n'ai donc pas le droit ! c'est inconcevable
Ensuite si c'est une fonction il faut faire des
return apropriés ! par exemple return 0 si vrai -1 si seculaire et pas bissextile -2 si rien du tout...
Re: [Ex] Validation d'une année bissextile
Posté : lun. 14 avr. 2008 14:21
par ani
Si on retire la vérification if $inumber < 1600 çà ne change pas, pour 100 il retourne année séculaire mais pas une année bissextile ect
la $B c'est un boolen (vrai ou faux)
Je vais essayer pour les retours,
je suis pas codeur
Code : Tout sélectionner
ConsoleWrite(isYearBissextile("1900"))
Func isYearBissextile($iNumber,$Log=0)
Local $Modulo4 = StringRight($iNumber,2)
Local $Modulo400 = StringReplace($iNumber,StringRight($iNumber,2),"",1)
Local $Seculaire = "00"
Local $DSM = ($Seculaire <> $Modulo4)
Local $DMM = ((StringIsDigit($Modulo4/4) And StringIsDigit($Modulo400/4)) = 0)
Local $b, $Return
If (($DSM=0) And ($DMM = 0)) then
$b = $iNumber & " est une année séculaire et bissextile" & @CRLF
$Return = True
ElseIf (($DSM = 1) And ($DMM = 1)) then
$b = $iNumber & " n'est pas une année séculaire ni bissextile" & @CRLF
$Return = False
ElseIf ($DSM=0) Then
$b = $iNumber & " est une année séculaire mais pas bissextile" & @CRLF
$Return = False
ElseIf ($DMM=0) Then
$b = $iNumber & " est une année bissextile mais pas séculaire" & @CRLF
$Return = True
EndIf
If $log <> 0 Then
$Return = $b
EndIf
Return $Return
EndFunc ;==>isYearBissextile
exemple d'utilisation
ConsoleWrite(isYearBissextile("1900"))
renvoie = false
ConsoleWrite(isYearBissextile("1900",1))
renvoie = 1900 est une année séculaire mais pas bissextile
sinon je serai ravis de comprendre le système des retour d'erreur et de leur construction
Dans la fonction je vois bien 4 Messages si j'ai bien résonné selon le cas rencontré.
merci pour les commentaires
