Skip to content
Snippets Groups Projects
Select Git revision
  • e5a55ae5d895b36506b339f1f24833424616305f
  • master default protected
  • 2018ws
  • 2017ws
  • 2016ws
5 results

loesung-3-10f.c

  • Forked from Peter Gerwinski / hp
    Source project has a limited visibility.
    dates.c 1.02 KiB
    #include <stdio.h>
    #include "dates.h"
    
    int is_leap_year (int year)
    {
      if (year % 4 == 0)
        if (year % 100 == 0)
          if (year % 400 == 0)
            return 1;
          else
            return 0;
        else
          return 1;
      else
        return 0;
    }
    
    int days_in_month (int month, int year)
    {
      if (month == 2)
        if (is_leap_year (year))
          return 29;
        else
          return 28;
      else if (month == 4 || month == 6 || month == 9 || month == 11)
        return 30;
      else
        return 31;
    }
    
    void date_print (date *d)
    {
      printf ("%02d.%02d.%04d", d->day, d->month, d->year);
    }
    
    int date_set (date *d, char day, char month, int year)
    {
      d->year = year;
      if (month > 0 && month <= 12)
        d->month = month;
      else
        return 0;
      if (day > 0 && day <= days_in_month (month, year))
        d->day = day;
      else
        return 0;
      return 1;
    }
    
    void date_next (date *d)
    {
      d->day++;
      if (d->day > days_in_month (d->month, d->year))
        {
          d->month++;
          d->day = 1;
          if (d->month > 12)
            {
              d->year++;
              d->month = 1;
            }
        }
    }