Error en ISLEAP()?, SOLUCIONADO

Error en ISLEAP()?, SOLUCIONADO

Postby Armando » Wed Jul 03, 2024 4:55 pm

Amigos del foro:

Estoy probando la función IsLeap() para determinar si el año dado es bisiesto

? IsLeap(2024) => .T.
? IsLeap(2025) => .T.
? IsLeap(2026) => .T.

2024 sí es bisiesto pero 2025 y 2026 No.

Que estoy haciendo mal?

Saludos

Fue mi error, debemos pasar la fecha completa y yo estoy pasando solo el año

Mil disculpas
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3229
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Error en ISLEAP()?, SOLUCIONADO

Postby cpheraclio » Wed Jul 03, 2024 5:23 pm

IsLeap()
Checks if a Date value belongs to a leap year.
Syntax
IsLeap( [<dDate>] ) --> lIsLeapYear

Arguments
<dDate>
Any Date value, except for an empty date, can be passed. The default is the return value of Date(). Return
The function returns .F. (true), when <dDate> falls into a leap year, otherwise .F. (false) is returned.
cpheraclio
 
Posts: 11
Joined: Thu Mar 17, 2022 6:47 pm

Re: Error en ISLEAP()?, SOLUCIONADO

Postby paquitohm » Wed Jul 03, 2024 5:44 pm

Code: Select all  Expand view  RUN
#Define lYEAR_BISIESTO(nYear) ( Mod(nYear, 4) == 0 )
paquitohm
 
Posts: 266
Joined: Fri Jan 14, 2022 8:37 am

Re: Error en ISLEAP()?, SOLUCIONADO

Postby Enrico Maria Giordano » Wed Jul 03, 2024 7:17 pm

paquitohm wrote:
Code: Select all  Expand view  RUN
#Define lYEAR_BISIESTO(nYear) ( Mod(nYear, 4) == 0 )


It is not correct.
User avatar
Enrico Maria Giordano
 
Posts: 8716
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Re: Error en ISLEAP()?, SOLUCIONADO

Postby paquitohm » Thu Jul 04, 2024 7:27 am

Enrico Maria Giordano wrote:
paquitohm wrote:
Code: Select all  Expand view  RUN
#Define lYEAR_BISIESTO(nYear) ( Mod(nYear, 4) == 0 )


It is not correct.


Ok ! Sorry, my error !!!

From ChatGPT:

Code: Select all  Expand view  RUN
FUNCTION EsBisiesto(nAno)
    // Comprueba si el año es divisible por 4
    IF (nAno % 4 == 0)
        // Si es divisible por 4, comprueba si también es divisible por 100
        IF (nAno % 100 == 0)
            // Si es divisible por 100, debe ser también divisible por 400 para ser bisiesto
            IF (nAno % 400 == 0)
                RETURN .T.  // Es bisiesto
            ELSE
                RETURN .F.  // No es bisiesto
            ENDIF
        ELSE
            RETURN .T.  // Es bisiesto
        ENDIF
    ELSE
        RETURN .F.  // No es bisiesto
    ENDIF
RETURN .F.  // Por defecto, no es bisiesto (aunque esta línea nunca se alcanzará)
paquitohm
 
Posts: 266
Joined: Fri Jan 14, 2022 8:37 am

Re: Error en ISLEAP()?, SOLUCIONADO

Postby nageswaragunupudi » Thu Jul 04, 2024 7:44 am

paquitohm wrote:
Enrico Maria Giordano wrote:
paquitohm wrote:
Code: Select all  Expand view  RUN
#Define lYEAR_BISIESTO(nYear) ( Mod(nYear, 4) == 0 )


It is not correct.


Ok ! Sorry, my error !!!

From ChatGPT:

Code: Select all  Expand view  RUN
FUNCTION EsBisiesto(nAno)
    // Comprueba si el año es divisible por 4
    IF (nAno % 4 == 0)
        // Si es divisible por 4, comprueba si también es divisible por 100
        IF (nAno % 100 == 0)
            // Si es divisible por 100, debe ser también divisible por 400 para ser bisiesto
            IF (nAno % 400 == 0)
                RETURN .T.  // Es bisiesto
            ELSE
                RETURN .F.  // No es bisiesto
            ENDIF
        ELSE
            RETURN .T.  // Es bisiesto
        ENDIF
    ELSE
        RETURN .F.  // No es bisiesto
    ENDIF
RETURN .F.  // Por defecto, no es bisiesto (aunque esta línea nunca se alcanzará)


Why such long code with so many lines?
Code: Select all  Expand view  RUN
function IsLeapYear( nYear ); return ( nYear % 4 ) == 0 .and. ( nYear % 100 ) != 0
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10646
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Error en ISLEAP()?, SOLUCIONADO

Postby paquitohm » Thu Jul 04, 2024 2:48 pm

Why such long code with so many lines?
Code: Select all  Expand view  RUN
function IsLeapYear( nYear ); return ( nYear % 4 ) == 0 .and. ( nYear % 100 ) != 0



IMHO, It is not correct.
Last edited by paquitohm on Thu Jul 04, 2024 5:19 pm, edited 1 time in total.
paquitohm
 
Posts: 266
Joined: Fri Jan 14, 2022 8:37 am

Re: Error en ISLEAP()?, SOLUCIONADO

Postby Enrico Maria Giordano » Thu Jul 04, 2024 2:56 pm

Why not using the function ISLEAP() that Harbour and xHarbour already provide?
User avatar
Enrico Maria Giordano
 
Posts: 8716
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Re: Error en ISLEAP()?, SOLUCIONADO

Postby karinha » Thu Jul 04, 2024 3:11 pm

Enrico Maria Giordano wrote:Why not using the function ISLEAP() that Harbour and xHarbour already provide?


Code: Select all  Expand view  RUN

// C:\FHW\SAMPLES\SLEEPARM.PRG

#include "FiveWin.ch"

FUNCTION Main()

   SET CENTURY ON
   SET DATE BRITISH
   SET EPOCH TO YEAR( DATE() ) - 30

   ? Date(), IsLeap()

   ? AddMonth( 12 ),  IsLeap( AddMonth(  12 ) )

   ? AddMonth( -12 ), IsLeap( AddMonth( -12 ) )

RETURN NIL

// FIN / END
 


Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7828
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Error en ISLEAP()?, SOLUCIONADO

Postby Armando » Thu Jul 04, 2024 4:15 pm

Friends:
Amigos:

This is my IsLeap function.
Esta es mi función IsLeap

Code: Select all  Expand view  RUN

FUNCTION IsLeap(nAmo)
RETURN( ((nAmo % 4) == 0 .AND.;
    (nAmo % 100) <> 0) .OR.;
    ((nAmo % 400) == 0) )
 


As you can see, in my function I only require the year while in Harbor's function
it requires the full date, that created confusion for me in my first post

Como pueden ver, solo requiero el año mientras que IsLeap de Harbour requiere
la fecha completa, eso me creó la confusión de mi primer post, estaba usando la función de Harbour.

With many greetings
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3229
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 50 guests