Advertisement
Guest User

bomber

a guest
Apr 22nd, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.22 KB | None | 0 0
  1. #include <stdio.h>
  2.    #include <time.h>
  3.  
  4.     int validate (int d, int m, int y,char sep1,char sep2)
  5.     {
  6.         int daysofeachmonth[13]={31,28,31,30,31,30,31,31,30,31,30,31};
  7.        if ((y%4==0 && y%100!=0||y%400==0) && d==29 && m==2)
  8.            return 0;
  9.        else if (daysofeachmonth[m-1]<d || d==0) {
  10.            printf("The date you entered is invalid, please enter a valid date.\n");
  11.            return 1; }
  12.        else if (1>m && m>12){
  13.            fprintf(stderr, "The date you entered is invalid, please enter a valid date.\n");
  14.            return 1; }
  15.        else if (0>=y && y>=10000) {
  16.            fprintf(stderr, "The date you entered is invalid, please enter a valid date.\n");
  17.            return 1; }
  18.        else if ((sep1!=sep2 && sep1!="/") || (sep1!=sep2 && sep1!="-")){
  19.            fprintf(stderr, "The date you entered is invalid, please enter a valid date.\n");
  20.            return 1;}
  21.        else
  22.        return 0;
  23.     }
  24.  
  25.     int rangeofdates ()
  26.    {
  27.        int error=1, n;
  28.        do
  29.        {scanf("%d", &n);
  30.         if (n<1 || n>30)
  31.        fprintf(stderr, "The number you entered is invalid, please enter a valid number between 1 and 30.\n");
  32.        else error=0;
  33.        }while(error==1);
  34.        return n;
  35.    }
  36.  
  37.    int compare(const void * x, const void * y)
  38.    {
  39.       return( *(int*)x - *(int*)y );
  40.    }
  41.  
  42.    int main ()
  43.    {
  44.      int i, n;
  45.      n=rangeofdates();
  46.      time_t dates[n];
  47.  
  48.        for (i=0; i<n; i++){
  49.            int d,m,y;
  50.            char sep1, sep2;
  51.            struct tm datestruct;
  52.            int error=1;
  53.            time_t tempdate;
  54.            do{
  55.              fflush(stdin);
  56.              scanf("%d%c%d%c%d", &d,&sep1,&m,&sep2,&y);
  57.              printf("%d %d %d\n", d,m,y);
  58.              error=validate(d, m, y, sep1, sep2);
  59.            }while(error==1);
  60.  
  61.            datestruct.tm_hour = 0;  datestruct.tm_min = 0; datestruct.tm_sec = 0;
  62.            datestruct.tm_mday = d; datestruct.tm_mon = m-1; datestruct.tm_year = y-1900;
  63.            datestruct.tm_isdst = 0;
  64.            tempdate = mktime(&datestruct);
  65.            dates[i]= tempdate;
  66.    }
  67.    qsort(dates, n, sizeof(dates), compare);
  68.    int j;
  69.    for (j=0; j<n; j++){
  70.    printf(ctime(&dates[j]));
  71.    }
  72.    return 0;
  73.    }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement