#include <stdio.h>
struct Date{
int day;
int month;
int year;
};
int before(struct Date d1,struct Date d2){
if(d1.year < d2.year){
return 1;
}
else if(d1.year > d2.year){
return 0;
}
else{
if(d1.month < d2.month){
return 1;
}
else if(d1.month > d2.month){
return 0;
}
else{
if(d1.day < d2.day){
return 1;
}
else if(d1.day >= d2.day){
return 0;
}
}
}
}
int within30days(struct Date d1,struct Date d2){
long d1Days,d2Days;
d1Days = d1.year*12*30+d1.month*30+d1.day;
d2Days = d2.year*12*30+d2.month*30+d2.day;
if(d1Days>d2Days){
if(d1Days<=d2Days+30)
return 1;
}
else{
if(d2Days<=d1Days+30)
return 1;
}
return 0;
}
int main(void) {
struct Date d1,d2;
int a,b;
a = before(d1,d2);
printf("before() output: %d",a
);
b=within30days(d1,d2);
printf("within30days() outout: %d",b
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpzdHJ1Y3QgRGF0ZXsKCWludCBkYXk7CglpbnQgbW9udGg7CglpbnQgeWVhcjsKfTsKCmludCBiZWZvcmUoc3RydWN0IERhdGUgZDEsc3RydWN0IERhdGUgZDIpewoJaWYoZDEueWVhciA8IGQyLnllYXIpewoJCXJldHVybiAxOwoJfQoJZWxzZSBpZihkMS55ZWFyID4gZDIueWVhcil7CgkJcmV0dXJuIDA7Cgl9CgllbHNlewoJCWlmKGQxLm1vbnRoIDwgZDIubW9udGgpewoJCQlyZXR1cm4gMTsKCQl9CgkJZWxzZSBpZihkMS5tb250aCA+IGQyLm1vbnRoKXsKCQkJcmV0dXJuIDA7CgkJfQoJCWVsc2V7CgkJCWlmKGQxLmRheSA8IGQyLmRheSl7CgkJCQlyZXR1cm4gMTsKCQkJfQoJCQllbHNlIGlmKGQxLmRheSA+PSBkMi5kYXkpewoJCQkJcmV0dXJuIDA7CgkJCX0JCgkJfQoJfQp9CgppbnQgd2l0aGluMzBkYXlzKHN0cnVjdCBEYXRlIGQxLHN0cnVjdCBEYXRlIGQyKXsKCWxvbmcgZDFEYXlzLGQyRGF5czsKCWQxRGF5cyA9IGQxLnllYXIqMTIqMzArZDEubW9udGgqMzArZDEuZGF5OwoJZDJEYXlzID0gZDIueWVhcioxMiozMCtkMi5tb250aCozMCtkMi5kYXk7CglpZihkMURheXM+ZDJEYXlzKXsKCQlpZihkMURheXM8PWQyRGF5cyszMCkKCQkJcmV0dXJuIDE7Cgl9CgllbHNlewoJCWlmKGQyRGF5czw9ZDFEYXlzKzMwKQoJCQlyZXR1cm4gMTsKCX0KCXJldHVybiAwOwp9CgppbnQgbWFpbih2b2lkKSB7CglzdHJ1Y3QgRGF0ZSBkMSxkMjsKCWludCBhLGI7CgoJcHJpbnRmKCJFbnRlciBkMS5kYXk6Iik7CglzY2FuZigiJWQiLCZkMS5kYXkpOwoJcHJpbnRmKCJFbnRlciBkMS5tb250aDoiKTsKCXNjYW5mKCIlZCIsJmQxLm1vbnRoKTsKCXByaW50ZigiRW50ZXIgZDEueWVhcjoiKTsKCXNjYW5mKCIlZCIsJmQxLnllYXIpOwoKCXByaW50ZigiRW50ZXIgZDIuZGF5OiIpOwoJc2NhbmYoIiVkIiwmZDIuZGF5KTsKCXByaW50ZigiRW50ZXIgZDIubW9udGg6Iik7CglzY2FuZigiJWQiLCZkMi5tb250aCk7CglwcmludGYoIkVudGVyIGQyLnllYXI6Iik7CglzY2FuZigiJWQiLCZkMi55ZWFyKTsKCglhID0gYmVmb3JlKGQxLGQyKTsKCXByaW50ZigiYmVmb3JlKCkgb3V0cHV0OiAlZCIsYSk7CgkKCWI9d2l0aGluMzBkYXlzKGQxLGQyKTsKCXByaW50Zigid2l0aGluMzBkYXlzKCkgb3V0b3V0OiAlZCIsYik7CgoJcmV0dXJuIDA7Cn0K