[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

RE: ntpsec as server questions



Hi Greg,

>  The rule for leap years is:
>
>   Every year that is exactly divisible by four is a leap year, except
>   for years that are exactly divisible by 100, but these centurial years
>   are leap years if they are exactly divisible by 400. For example, the
>   years 1700, 1800, and 1900 are not leap years, but the year 2000 is.

> I don't have my copy of K&R close to hand, but my preferred implementation for a function that decides leap years is (pseudo-code):
> 
> bool isleapyear (int year) {
>     if (year % 400 == 0) return true;
>     if (year % 100 == 0) return false;
>     if (year % 4 == 0) return true;
>     return false;
> }

Except, I think it should be in reverse order because now 2000 first gets a true, then a false but then a true again and after that EVERYTHING gets a false ;-)
So, in pseudo code
  bool isleapyear (int year) {
      return false;
      if (year % 4 == 0) return true;
      if (year % 100 == 0) return false;
      if (year % 400 == 0) return true;
  }

The funny thing is, a lot of people I taught programming in the 80's and 90's knew about the 4 year rule but not the exceptions. But programming it like that would work for however long that program would be around anyway. 
I know all of the programs I wrote commercially have been superseded by something else now, so it did not matter that I did it correctly. ;-)

Bonno Bloksma


Reply to: