Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: 28 ou 29 ? bissextile ou pas ? Lun 7 Juin 2021 - 13:59 | |
| Voilà une petite fonction qui renvoie 1 ou 0 selon que l'année de la date (format jj/mm/aaaa) passée en paramètre le soit ou pas. - Code:
-
FNC BisextileOuiNon%(d$) dim_local bis%,year% year%=val(mid$(d$,7,4)) if mod(year%,4)=0 if mod(year%,100)=0 if mod(year%,400)=0 bis%=1 else bis%=0 end_if else bis%=1 end_if else bis%=0 end_if result bis% END_FNC | |
|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: 28 ou 29 ? bissextile ou pas ? Lun 7 Juin 2021 - 17:23 | |
| Salut Yannick Merci pour le partage. Mais … Si on veut savoir si une année est bissextile ou pas, on peut se contenter d’appeler la fonction avec comme paramètre la valeur de l’année seulement et pas besoin de toute la date, mais bon, ça ne fait pas de mal. On peut aussi utiliser DATE_YEAR et aussi DATE_MONTH et DATE_DAY si besoin est. Comme j’aime le condensé, voici ma solution : - Code:
-
rem ============================================================================ print IsBissextile(2020) print IsBissextile(2021) print IsBissextile(1900) print IsBissextile(2024)
end rem ============================================================================ ' Retourne 1 si l'année a est bissextile, 0 sinon FNC IsBissextile(a) IF (mod(a, 4)= 0) AND (( MOD(a, 100) > 0) OR (MOD(a, 400) = 0)) result 1 else result 0 end_if END_FNC rem ============================================================================
| |
|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: 28 ou 29 ? bissextile ou pas ? Lun 7 Juin 2021 - 17:38 | |
| Avec le compilateur c’est encore plus concis (une simple petite ligne contenant une expression logique). La preuve: - Code:
-
rem ============================================================================ rem Pour le compilateur rem ============================================================================ print IsBissextile(2020) print IsBissextile(2021) print IsBissextile(1900) print IsBissextile(2024)
end rem ============================================================================ ' Retourne 1 si l'année a est bissextile, 0 sinon FNC IsBissextile(a) result abs((mod(A, 4)= 0) AND (( MOD(a, 100) > 0) OR (MOD(a, 400) = 0))) END_FNC rem ============================================================================
| |
|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 7 Juin 2021 - 21:44 | |
| Bravo pour cette réduction Papydall. Je prends la formule intermédiaire pour l'instant... | |
|