Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <time.h>
- int validate (int d, int m, int y,char sep1,char sep2)
- {
- int daysofeachmonth[13]={31,28,31,30,31,30,31,31,30,31,30,31};
- if ((y%4==0 && y%100!=0||y%400==0) && d==29 && m==2)
- return 0;
- else if (daysofeachmonth[m-1]<d || d==0) {
- printf("The date you entered is invalid, please enter a valid date.\n");
- return 1; }
- else if (1>m && m>12){
- fprintf(stderr, "The date you entered is invalid, please enter a valid date.\n");
- return 1; }
- else if (0>=y && y>=10000) {
- fprintf(stderr, "The date you entered is invalid, please enter a valid date.\n");
- return 1; }
- else if ((sep1!=sep2 && sep1!="/") || (sep1!=sep2 && sep1!="-")){
- fprintf(stderr, "The date you entered is invalid, please enter a valid date.\n");
- return 1;}
- else
- return 0;
- }
- int rangeofdates ()
- {
- int error=1, n;
- do
- {scanf("%d", &n);
- if (n<1 || n>30)
- fprintf(stderr, "The number you entered is invalid, please enter a valid number between 1 and 30.\n");
- else error=0;
- }while(error==1);
- return n;
- }
- int compare(const void * x, const void * y)
- {
- return( *(int*)x - *(int*)y );
- }
- int main ()
- {
- int i, n;
- n=rangeofdates();
- time_t dates[n];
- for (i=0; i<n; i++){
- int d,m,y;
- char sep1, sep2;
- struct tm datestruct;
- int error=1;
- time_t tempdate;
- do{
- fflush(stdin);
- scanf("%d%c%d%c%d", &d,&sep1,&m,&sep2,&y);
- printf("%d %d %d\n", d,m,y);
- error=validate(d, m, y, sep1, sep2);
- }while(error==1);
- datestruct.tm_hour = 0; datestruct.tm_min = 0; datestruct.tm_sec = 0;
- datestruct.tm_mday = d; datestruct.tm_mon = m-1; datestruct.tm_year = y-1900;
- datestruct.tm_isdst = 0;
- tempdate = mktime(&datestruct);
- dates[i]= tempdate;
- }
- qsort(dates, n, sizeof(dates), compare);
- int j;
- for (j=0; j<n; j++){
- printf(ctime(&dates[j]));
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement