#include <stdio.h>
main(){
// Init the variables we use
int year = 0;
int month = 0;
int day = 0;
int maxDay = 0;
int daysToAdd = 0;
// Ask user for a date
printf("Please enter a date in the following format: dd/mm/yyyy:\n"); // Validate data
while( scanf( "%d/%d/%d", &day
, &month
, &year
)!= 3 || day
<=0 || month
<=0 || year
<0 || daysInMonth
(month
,year
)<day
){ printf("Please enter a valid date.\n"); }
// Ask user for days to add
printf("Please enter days to add: \n"); // Validate data
while( scanf( "%d", &daysToAdd
)!= 1 || daysToAdd
<=0 ){ printf("Please enter a positive number.\n"); }
// Calculate date
day += daysToAdd;
maxDay = daysInMonth( month, year);
while( day>maxDay ){
day -= maxDay;
month += 1;
if(month==13){
month = 1;
year += 1;
}
maxDay = daysInMonth( month, year);
}
printf("Result date : %d/%d/%d", day
, month
, year
);
return(0);
}
// Get days in the month
int daysInMonth( int month, int year){
if( month==4 || month==6 || month==9 || month==11 ){
return 30;
}else if( month== 2 ){
if( year%4==0 && ( year%100==0 || year%400==0) )
return 29;
else
return 28;
}else{
return 31;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgptYWluKCl7CgkvLyBJbml0IHRoZSB2YXJpYWJsZXMgd2UgdXNlCglpbnQgeWVhciA9IDA7CglpbnQgbW9udGggPSAwOwoJaW50IGRheSA9IDA7CglpbnQgbWF4RGF5ID0gMDsKCWludCBkYXlzVG9BZGQgPSAwOwoJCgkvLyBBc2sgdXNlciBmb3IgYSBkYXRlCglwcmludGYoIlBsZWFzZSBlbnRlciBhIGRhdGUgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6IGRkL21tL3l5eXk6XG4iKTsKCS8vIFZhbGlkYXRlIGRhdGEKCXdoaWxlKCBzY2FuZiggIiVkLyVkLyVkIiwgJmRheSwgJm1vbnRoLCAmeWVhcikhPSAzIHx8IGRheTw9MCB8fCBtb250aDw9MCB8fCB5ZWFyPDAgfHwgZGF5c0luTW9udGgobW9udGgseWVhcik8ZGF5ICl7CgkJcHJpbnRmKCJQbGVhc2UgZW50ZXIgYSB2YWxpZCBkYXRlLlxuIik7Cgl9CgkKCS8vIEFzayB1c2VyIGZvciBkYXlzIHRvIGFkZAoJcHJpbnRmKCJQbGVhc2UgZW50ZXIgZGF5cyB0byBhZGQ6IFxuIik7CgkvLyBWYWxpZGF0ZSBkYXRhCgl3aGlsZSggc2NhbmYoICIlZCIsICZkYXlzVG9BZGQpIT0gMSB8fCBkYXlzVG9BZGQ8PTAgKXsKCQlwcmludGYoIlBsZWFzZSBlbnRlciBhIHBvc2l0aXZlIG51bWJlci5cbiIpOwoJfQoJCgkvLyBDYWxjdWxhdGUgZGF0ZQoJCglkYXkgKz0gZGF5c1RvQWRkOwoJbWF4RGF5ID0gZGF5c0luTW9udGgoIG1vbnRoLCB5ZWFyKTsKCXdoaWxlKCBkYXk+bWF4RGF5ICl7CgkJCgkJZGF5IC09IG1heERheTsKCQltb250aCArPSAxOwoJCWlmKG1vbnRoPT0xMyl7CgkJCW1vbnRoID0gMTsKCQkJeWVhciArPSAxOwoJCX0KCQkKCQltYXhEYXkgPSBkYXlzSW5Nb250aCggbW9udGgsIHllYXIpOwoJfQoKCXByaW50ZigiUmVzdWx0IGRhdGUgOiAlZC8lZC8lZCIsIGRheSwgbW9udGgsIHllYXIpOwoJCglyZXR1cm4oMCk7Cn0KCi8vIEdldCBkYXlzIGluIHRoZSBtb250aAppbnQgZGF5c0luTW9udGgoIGludCBtb250aCwgaW50IHllYXIpewogICAgaWYoIG1vbnRoPT00IHx8IG1vbnRoPT02IHx8IG1vbnRoPT05IHx8IG1vbnRoPT0xMSApewoJCXJldHVybiAzMDsKCX1lbHNlIGlmKCBtb250aD09IDIgKXsKCQlpZiggeWVhciU0PT0wICYmICggeWVhciUxMDA9PTAgfHwgeWVhciU0MDA9PTApICkKCQkJcmV0dXJuIDI5OwoJCWVsc2UKCQkJcmV0dXJuIDI4OwoJfWVsc2V7CgkJcmV0dXJuIDMxOwoJfQp9Cg==