All pastes #352749 Raw Edit

Untitled

public c v1 · immutable
·published 2007-02-13 00:15 UTC
rendered paste body
#include <stdio.h>int main(){int day1, month1, year1, day2, month2, year2, result;int evaluate = 0;char var1, var2, c;/* Define Functions */int verify_date(int day, int month, int year, char var1, char var2); /* Verifys if date input is correct */int february(int year); /* identifys how many days are on February */int difference(int day1, int month1, int year1, int day2, int month2, int year2); /* Calculates the difference between two dates *//* Main Program */   do   {      fprintf(stderr, "Insert first Date: (e.g. <day>/<month>/<year> or <day>-<month>-<year>)\n");      scanf("%i%c%i%c%i", &day1, &var1, &month1, &var2, &year1);      for (c = getchar(); c!= '\n'; c = getchar() );      evaluate = verify_date(day1, month1, year1, var1, var2);   }   while (!evaluate);   do   {      fprintf(stderr, "Insert second Date: (e.g. <day>/<month>/<year> or <day>-<month>-<year>)\n");      scanf("%i%c%i%c%i", &day2, &var1, &month2, &var2, &year2);      for (c = getchar(); c!= '\n'; c = getchar() );      evaluate = verify_date(day2, month2, year2, var1, var2);   }   while (!evaluate);   result = difference(day1, month1, year1, day2, month2, year2);   printf("%i\n", result);   return 0;/* End of Main Program */}/* VERIFICAR MES DE FEVEREIRO *//* Functions */int verify_date(int day, int month, int year, char var1, char var2) /* Verify if an illegal date is entered */{   int evaluate1, evaluate2, y;   if ((var1 == '/' || var1 == '-') && (var2 == '/' || var2 == '-'))   {      if (month > 0 && month < 13) /* 1 <= month <= 12 */      {         if (month == 4 || month == 6 || month == 9 || month == 11) /* Months with 30 days */         {            if (day < 1 || day > 30) /* 1 <= day <= 30 */            {               fprintf(stderr, "NOT standard output");               evaluate1 = 0;            }            else               evaluate1 = 1;         }         if (month == 2) /* February, month with 28 days */         {            if (year % 4 == 0)               y = 29;            else               y = 28;            if (day < 1 || day > y)            {               fprintf(stderr, "NOT standard output");               evaluate1 = 0;            }            else               evaluate1 = 1;         }         else /* Months with 31 days */         {            if (day < 1 || day > 31) /* 1 <= day <= 31 */            {               fprintf(stderr, "NOT standard output");               evaluate1 = 0;            }            else               evaluate1 = 1;         }      }      else       {         fprintf(stderr, "NOT standard output");         evaluate1 = 0;      }            if (year > 0 && year < 10000) /* 1 <= year <= 9999 */         evaluate2 = 1;      else      {         fprintf(stderr, "NOT standard output");         evaluate2 = 0;      }         if (evaluate1 == 1 && evaluate2 == 1)         return 1;      else         return 0;   }   else      return 0;}int difference(int day1, int month1, int year1, int day2, int month2, int year2){   int dif_years, ys, ye, dif_months, ms, me, dif_days, ds, de;       /* ys = year_start, ye = year_end, ms = month_start, me = month_end, ds = day_start, de = day_end */   int months[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};   int days = 0;   int m, y;   dif_years = year1 - year2;   if (dif_years > 0)   {         ys = year2;      ms = month2;      ds = day2;      ye = year1;      me = month1;      de = day1;   }   if (dif_years < 0)   {      ys = year1;      ms = month1;      ds = day1;      ye = year2;      me = month2;      de = day2;   }   else   {      dif_months = month1 - month2;      if (dif_months > 0)   {         ys = year2;         ms = month2;         ds = day2;         ye = year1;         me = month1;         de = day1;      }      if (dif_months < 0)   {         ys = year1;         ms = month1;         ds = day1;         ye = year2;         me = month2;         de = day2;      }      else   {   /* dif_months = 0 */         dif_days = day1 - day2;         if (dif_days > 0)   {            ys = year2;            ms = month2;            ds = day2;            ye = year1;            me = month1;            de = day1;         }         if (dif_days < 0)   {            ys = year1;            ms = month1;            ds = day1;            ye = year2;            me = month2;            de = day2;         }         else            return 0;      }   }   if (dif_years > 0 || dif_years < 0)   {      months[1] = february(ys);      days += months[ms-1] - ds;      m = ms;      while (m < 12)   {         days += months[m];         ++m;      }      y = ys + 1;      while (y < ye)   {         months[1] = february(y);         m = 0;         while (m < 12)   {            days += months[m];            ++m;         }      }      months[1] = february(ye);      m = 0;      while (m < me)   {         days += months[m];         ++m;      }      days += de;   }   else   {      months[1] = february(ys);      days += months[ms-1] - ds;      m = ms;      while (m < me)   {         days += months[m];         ++m;      }      days += de;   }   if (dif_years > 0 || (dif_years == 0 && dif_months > 0) || (dif_years == 0 && dif_months == 0 && dif_days > 0))      return -days;   else      return days;}int february(int year){   int root;   root = year % 4;   if (root == 0)      return 29;   else      return 28;}